2010-08-16 156 views
3

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

Threadpool.GetAvailableThreads(out WorkThreads,out compPortThreads);

我得到500,1000。我正在运行双核心电脑,所以不会期望超过50个。

我真的有500,1000在我的池?

感谢 约翰

回答

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啊,车翻译的乐趣...

7

每个处理器的线程默认数量有不同的版本之间显著改变。

相信在运行时获得的值。

current documentation状态:

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

2

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