Iva*_*van 5 .net multithreading task task-parallel-library taskfactory
我使用任务库来进行图像压缩服务.我想压缩许多文件的并发性.但是我希望服务仅在用户空闲时运行(或者在程序中没有更多的任务).
我知道threadPool不支持"更改线程优先级"功能,因此任务也支持此功能.
我可以在更高级别的控制上开发该功能吗?(例如,TaskScheduler优先级)
正如@zengr提到的,您可以使用优先级队列模式来解决这个问题。实际上, MSDN 中有一个很好的示例,它使用ConcurrentQueue<T>每个优先级的实例来实现优先级队列,然后使用自定义IProducerConsumerCollection<T>实现来包装该队列,该自定义实现先从较高优先级队列中提取项目,然后再从较低优先级队列中提取项目。这种类型的实现使您的生产者能够确定应该有多少优先级,在添加项目时分配优先级,并让您的消费者首先处理具有最高优先级的项目,而无需了解优先级算法。