[已解决问题] 关于线程池的问题
提问时间: 2008-06-23 12:31
悬赏分:20 浏览:226 次
xx.cs

public void Test()
{
//..............
ThreadPool.QueueUserWorkItem(new WaitCallback(Run), queue);
Thread.Sleep(100);
}


上面这段代码在外部大量进行调用会不会有问题?



提问者:yibin - 初学一级
最佳答案
你说到“外面会大量调用”。因此,每次调用,主线程都会休眠100毫秒。不知道这个是不是你的问题。 另外,如果你排队的线程数量超过64个,线程池会自动调度,等待前面的线程结束后,启动接下来的线程。应该不会有问题。
2008/6/23 13:13:34 回答者:Colin Han


提问者对于答案的评价:谢谢
其它回答(1)
线程池最多允许64个线程同时工作,如果到了上限会出问题。
3个月前   回答者:玉开 - 大侠五级
评论
3个月前   yibin :
如果超过64个的话
那其它的线程是不是会等线程池中的某些线程处理完再执行?
3个月前   yibin :

理论上应该是会排队,直到线程池中有可用的线程
但它会占用一定的内存空间
上面代码在LoadRunner 40并发,连续8小时后
程序挂掉了
不知道是不是内存占用过大导致

3个月前   G yc {Son of VB.NET} :
每个可用处理器 25 个辅助线程,再加上 1000 个 I/O 完成线程

MSDN 上的,
应该说,如果线程池的排队满了, 其余的就会等待, 因此比较适合小的,大量的任务
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接