Я пытаюсь реализовать следующий сценарий:
TaskScheduler HighPrioScheduler = new QueuedTaskScheduler().ActivateNewQueue(0);
TaskScheduler MediumPrioScheduler = new QueuedTaskScheduler().ActivateNewQueue(1);
TaskScheduler LowPrioScheduler = new QueuedTaskScheduler().ActivateNewQueue(2);
void HandleWebRequest(SomeRequest request)
{
if(request.Prio == Prio.High)
HandleWebRequestWithScheduler(request, new QueuedTaskScheduler(HighPrioScheduler, 4));
if(request.Prio == Prio.Medium)
HandleWebRequestWithScheduler(request, new QueuedTaskScheduler(MediumPrioScheduler, 4));
if(request.Prio == Prio.Low)
HandleWebRequestWithScheduler(request, new QueuedTaskScheduler(LowPrioScheduler, 4));
}
Я хочу иметь 3 очереди планирования с глобальным приоритетом, чтобы задачи, созданные высокоприоритетными WebRequestHandlers, выполнялись первыми. Кроме того, все WebRequestHandlers должны иметь ограниченную степень параллелизма. Реален ли такой подход с использованием QueuedTaskScheduler из библиотеки ParallelExtensionsExtra ?