gpt4 book ai didi

c# - 如何确定 ThreadPool 队列中的项目数

转载 作者:太空狗 更新时间:2023-10-29 20:25:41 26 4
gpt4 key购买 nike

我正在使用线程池对 1000 个工作项进行排队

While(reading in data for processing)
{
args = some data that has been read;
ThreadPool.QueueUserWorkItem(new WaitCallback(threadRunner), args);
}

然而,这工作得很好,因为主线程对请求排队的速度比处理它们的速度快,内存被慢慢吃掉。

我想做一些类似于下面的事情来随着队列的增长限制排队

Thread.Sleep(numberOfItemsCurrentlyQueued);

随着队列的增长,这将导致更长的等待时间。

有什么方法可以发现队列中有多少项?

最佳答案

生产者/消费者队列更易于管理的抽象是 BlockingCollection<T> .那里的示例代码展示了如何使用任务来播种和排空队列。队列计数很容易通过 Count 获得。属性(property)。

如果可以,请避免使用 Sleep延迟生产更多元素。当队列变得太大时,让生产者等待事件或类似事件,并让消费者在队列积压达到允许生产更多项目的阈值时发出事件信号。始终尝试使事情成为事件驱动的 - Sleep有点猜测。

关于c# - 如何确定 ThreadPool 队列中的项目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4410959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com