加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 07:56:05 所属栏目:百科 来源:网络整理
导读:我正在使用ThreadPool来排队1000个工作项 While(reading in data for processing){ args = some data that has been read; ThreadPool.QueueUserWorkItem(new WaitCallback(threadRunner),args);} 然而,这非常有效,因为主线程将请求排队的速度比处理内存的速
我正在使用ThreadPool来排队1000个工作项
While(reading in data for processing)
{
    args = some data that has been read;
    ThreadPool.QueueUserWorkItem(new WaitCallback(threadRunner),args);
}

然而,这非常有效,因为主线程将请求排队的速度比处理内存的速度慢得多.

我希望做一些类似于以下内容的事情,以便在队列增长时限制排队

Thread.Sleep(numberOfItemsCurrentlyQueued);

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

有没有办法发现队列中有多少项?

解决方法

我不认为有内置方式,但你可以引入一个会增加/减少的[静态?]计数器;为此你必须创建自己的方法来包装ThreadPool.QueueUserWorkItem()并处理计数器.

顺便说一句,万一你运行.NET 4.0,你应该使用TaskFactory.StartNew而不是ThreadPool.QueueUserWorkItem() – 据说它有更好的内存/线程管理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读