如何确定ThreadPool队列中的项数我正在使用ThreadPool对1000个工作项进行排队While(readingindataforprocessing){args=一些已读取的数据;ThreadPool.QueueUserWorkItem(newWaitCallback(threadRunner),args);然而,这非常有效,因为主线程排队请求比它处理内存慢得多。随着队列的增长Thread.Sleep(numberOfItemsCurrentlyQueued);我想做类似下面的事情来限制排队随着队列的增长,这会导致更长的等待时间。有没有办法发现队列中有多少项目?我不认为有内置的方法,但你可以引入一个[static?]柜台;为此,您必须创建自己的方法来包装ThreadPool.QueueUserWorkItem()并处理计数器。顺便说一句,如果你运行的是.NET4.0,你应该使用TaskFactory.StartNew而不是ThreadPool.QueueUserWorkItem()-据说它有更好的内存/线程管理。生产者/消费者队列更易于管理的抽象是BlockingCollection。此处的示例代码展示了如何使用任务来播种和排空队列。可以通过Count属性轻松获取队列数。如果可以,请避免使用睡眠来延迟生产更多物品。当队列变得太大时,让生产者等待事件或类似事件,并允许消费者在队列积压达到可以生产更多项目的阈值时发出事件信号。始终努力保持动力——睡眠是一种猜测。以上就是C#学习教程的全部内容:如何确定ThreadPool队列中的项数。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
