Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以嵌套QueuedTaskScheduler?_C#_.net_Task Parallel Library - Fatal编程技术网

C# 是否可以嵌套QueuedTaskScheduler?

C# 是否可以嵌套QueuedTaskScheduler?,c#,.net,task-parallel-library,C#,.net,Task Parallel Library,我尝试实现以下场景: TaskScheduler HighPrioScheduler = new QueuedTaskScheduler().ActivateNewQueue(0); TaskScheduler MediumPrioScheduler = new QueuedTaskScheduler().ActivateNewQueue(1); TaskScheduler LowPrioScheduler = new QueuedTaskScheduler().ActivateNewQueue

我尝试实现以下场景:

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个全局优先级调度队列,这样高优先级WebRequestHandler创建的任务将首先执行。此外,所有WebRequestHandler都应该具有有限的并行度。使用库中的QueuedTaskScheduler,这种方法可行吗?

虽然这是一个有趣的练习,但您从根本上想解决什么问题?或者这只是为了学术目的?我的意思是,如果你真的想走这条路,我会考虑修改一个简单的任务调度器,给你优先级,并使用TPL数据流。或者烘焙您自己的传播系统,该系统基于某些内容提供优先级。然而,这将需要大量的工作,我只是不知道你会从中获得多少收益。这又让我想到,如果您试图解决或遇到一些问题,这是一个庞大的后端,需要并行处理数百个请求。有些请求比其他请求具有更高的优先级,应首先处理这些请求及其创建的任务。但是,任何单个请求处理程序都不能耗尽整个线程池。@MichaelRandall^