goo*_*ate 6 c# multithreading priority-queue producer-consumer task-parallel-library
之前是否有任何将任务添加到具有不同优先级的 TPL 运行时的工作?
如果没有,一般来说,我将如何实现这一点?
理想情况下,我计划使用生产者-消费者模式将“待办事项”工作添加到 TPL。有时我发现低优先级作业需要升级为高优先级作业(相对于其他作业)。
如果有人有一些我应该在搜索时使用的搜索关键字,请提及它们,因为我还没有找到可以完成我需要的代码。
ParallelExtensionsExtras 包含多个自定义TaskScheduler,它们可以直接提供帮助,也可以作为您自己的调度程序的基础。
具体来说,您可能会对两种调度程序感兴趣:
QueuedTaskScheduler,它允许您以不同的优先级安排Tasks,但不允许更改入队的优先级Task。ReprioritizableTaskScheduler,它没有不同的优先级,但允许您将特定的内容移动Task到队列的前面或后面。(尽管就当前等待的数量而言,更改优先级是 O(n) ,但如果同时Task有很多 s,这可能会成为问题。)Task