我一直在阅读线程池。许多站点都说线程池上的默认最大线程数为25(每个处理器)。但是我没有修改最大线程,当我这样做时:
Threadpool.GetAvailableThreads(输出WorkThreads,输出compPortThreads);
我得到500,1000。我正在运行双核PC,因此不会超过50个。
我的游泳池里真的有500,1000吗?
由于 约翰
答案 0 :(得分:7)
每个处理器的默认线程数在不同版本之间发生了显着变化。
信任在运行时获得的值。
每个进程有一个线程池。 线程池的默认大小为 每个可用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)
该方法返回可以启动的线程数,而不是当前正在运行的线程数。您阅读的有关最大信息的信息已过时。我不确定哪个版本,但线程池限制大大增加,以避免死锁问题主要是由于开发人员不知道他们在做什么,恕我直言。