线程池中的线程

时间:2010-08-16 14:59:13

标签: c# threadpool

我一直在阅读线程池。许多站点都说线程池上的默认最大线程数为25(每个处理器)。但是我没有修改最大线程,当我这样做时:

Threadpool.GetAvailableThreads(输出WorkThreads,输出compPortThreads);

我得到500,1000。我正在运行双核PC,因此不会超过50个。

我的游泳池里真的有500,1000吗?

由于 约翰

3 个答案:

答案 0 :(得分:7)

每个处理器的默认线程数在不同版本之间发生了显着变化。

信任在运行时获得的值。

current documentation州:

  

每个进程有一个线程池。   线程池的默认大小为   每个可用250个工作线程   处理器,1000 I / O完成   线程。

答案 1 :(得分:7)

版本之间发生了变化:

来自the documentation of the ThreadPool class in Visual Studio 2005

  

每个进程有一个线程池。线程池的默认大小为每个可用处理器25个线程。

来自the documentation of the ThreadPool class in Visual Studio 2010

  

每个进程有一个线程池。线程池的默认大小为每个可用处理器250个工作线程,以及1000个I / O完成线程。

作为一个有趣的旁注:对于Visual Studio 2008,English documentation承诺250个工作线程,而German translation只给你25个。啊,错误翻译的乐趣......

答案 2 :(得分:2)

该方法返回可以启动的线程数,而不是当前正在运行的线程数。您阅读的有关最大信息的信息已过时。我不确定哪个版本,但线程池限制大大增加,以避免死锁问题主要是由于开发人员不知道他们在做什么,恕我直言。