内容简介:看起来很合理我发现BlockingCollection是相当快的.我用它每秒处理数以万计的请求.如果您的应用程序是处理器绑定的,那么您可能不想创建比具有内核的更多的员工.当然,你不想创建比核心更多的工作人员.在四核机器上,如果您希望大部分时间花费在FFT上,那么四名工作人员将会吃掉所有的CPU.更多的工作人员只是意味着你有线程上下文切换来处理. TPL通常会为您平衡,但是如果您无法处理超过一个人,则无法创建100名工人.我建议你运行测试与3,4,5,6,7和8工人.看哪一个给你最好的吞吐量.
我有一个队列,在其上放置等待的傅立叶变换请求(相对耗时的操作) – 在某些情况下,我们可以每秒获得数千个转换请求,因此它必须快速.
我正在升级旧代码以使用.net 4,以及移植到TPL.我想知道处理这个队列的最有效(最快的吞吐量)方式是什么样的.我想使用所有可用的内核.
目前我正在尝试一个BlockingCollection.我创建一个队列处理程序类,它生成4个任务,阻塞BlockingCollection并等待传入的工作.然后他们处理这个待处理的转换.码:
public class IncomingPacketQueue : IDisposable { BlockingCollection<IncomingPacket> _packetQ = new BlockingCollection<IncomingPacket>(); public IncomingPacketQueue(int workerCount) { for (int i = 0; i < workerCount; i++) { Task.Factory.StartNew(Consume); } } public void EnqueueSweep(IncomingPacket incoming) { _packetQ.Add(incoming); } private void Consume() { foreach (var sweep in _packetQ.GetConsumingEnumerable()) { //do stuff var worker = new IfftWorker(); Trace.WriteLine(" Thread {0} picking up a pending ifft".With(Thread.CurrentThread.ManagedThreadId)); worker.DoIfft(sweep); } } public int QueueCount { get { return _packetQ.Count; } } #region IDisposable Members public void Dispose() { _packetQ.CompleteAdding(); } #endregion }
这看起来好像是一个很好的解决方案吗?它似乎最大限度地减少所有内核 – 尽管我目前不确定我应该在我的构造函数中产生多少个工作.
看起来很合理我发现BlockingCollection是相当快的.我用它每秒处理数以万计的请求.
如果您的应用程序是处理器绑定的,那么您可能不想创建比具有内核的更多的员工.当然,你不想创建比核心更多的工作人员.在四核机器上,如果您希望大部分时间花费在FFT上,那么四名工作人员将会吃掉所有的CPU.更多的工作人员只是意味着你有线程上下文切换来处理. TPL通常会为您平衡,但是如果您无法处理超过一个人,则无法创建100名工人.
我建议你运行测试与3,4,5,6,7和8工人.看哪一个给你最好的吞吐量.
http://stackoverflow.com/questions/6203836/most-efficient-way-to-process-a-queue-with-threads
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 045.Python线程队列
- Callable,阻塞队列,线程池问题
- 面试官:线程池运行机制如何改为线程池满了,再丢队列?
- 数据结构与算法:队列:队列在线程池等有限资源池中的应用
- 任务与队列 iOS之多线程GCD(一)
- 踩坑 Spring Cloud Hystrix 线程池队列配置
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Visual Thinking
Colin Ware / Morgan Kaufmann / 2008-4-18 / USD 49.95
Increasingly, designers need to present information in ways that aid their audiences thinking process. Fortunately, results from the relatively new science of human visual perception provide valuable ......一起来看看 《Visual Thinking》 这本书的介绍吧!