parallel for the queue processing, up request semaphore, remove queue position (unused), bump api version

This commit is contained in:
rootdarkarchon
2023-01-15 01:44:10 +01:00
parent e968adb7be
commit 5e0e21ef68
3 changed files with 14 additions and 18 deletions

View File

@@ -66,17 +66,9 @@ public class RequestQueueService : IHostedService
throw new Exception("Error during EnqueueUser");
}
public bool StillEnqueued(Guid request, string user, out int queuePosition)
public bool StillEnqueued(Guid request, string user)
{
var result = _queue.FirstOrDefault(c => c.RequestId == request && string.Equals(c.User, user, StringComparison.Ordinal));
if (result != null)
{
queuePosition = Array.IndexOf(_queue.ToArray(), result);
return true;
}
queuePosition = -1;
return false;
return _queue.FirstOrDefault(c => c.RequestId == request && string.Equals(c.User, user, StringComparison.Ordinal)) != null;
}
public bool IsActiveProcessing(Guid request, string user, out UserRequest userRequest)
@@ -109,8 +101,14 @@ public class RequestQueueService : IHostedService
try
{
for (int i = 0; i < _userQueueRequests.Length; i++)
Parallel.For(0, _userQueueRequests.Length, new ParallelOptions()
{
MaxDegreeOfParallelism = 10
},
(i) =>
{
if (!_queue.Any()) return;
if (_userQueueRequests[i] != null && !_userQueueRequests[i].IsActive && _userQueueRequests[i].ExpirationDate < DateTime.UtcNow) _userQueueRequests[i] = null;
if (_userQueueRequests[i] == null)
@@ -120,9 +118,7 @@ public class RequestQueueService : IHostedService
DequeueIntoSlot(request, i);
}
}
if (!_queue.Any()) break;
}
});
}
catch (Exception ex)