Ron*_*rby 8 .net parallel-processing concurrency multithreading task-parallel-library
这一切都发生在Windows服务中.
我有一个Queue<T>
(实际上是ConcurrentQueue<T>
)等待处理的物品.但是,我不想一次只处理一个,我想同时处理n个项目,其中n是一个可配置的整数.
如何使用任务并行库进行此操作?
我知道TPL会代表开发人员对集合进行并发处理,但不确定这是否是我追求的功能.我是多线程和TPL的新手.
使用BlockingCollection<T>
而不是ConcurrentQueue<T>
,那么你可以启动任意数量的消费者线程并使用Take
的方法BlockingCollection
。如果集合为空,该Take
方法将自动阻塞在调用者线程中等待添加项目,否则线程将并行消耗所有队列项目。然而,正如您的问题提到 TPL 的使用一样,事实证明Parallel.ForEach
在使用时存在一些问题,BlockingCollection
请查看这篇文章以了解更多详细信息。所以你必须自己管理消费者线程的创建。new Thread(/*consumer method*/)
或者new Task()
...
归档时间: |
|
查看次数: |
2425 次 |
最近记录: |