我正在使用线程池来排队处理数千个工作项。
While(reading in data for processing)
{
args = some data that has been read;
ThreadPool.QueueUserWorkItem(new WaitCallback(threadRunner), args);
}
这个功能非常好用,但是由于主线程将请求排队的速度比处理速度更快,内存会逐渐被消耗。
当队列增长时,我希望能够执行以下类似操作来限制队列的排队:
Thread.Sleep(numberOfItemsCurrentlyQueued);
随着队列的增长,等待时间会变得更长。
有没有办法发现队列中有多少项?