2010-08-16 281 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是最大值的信息已經過時了。我不確定哪個版本,但是線程池限制顯着增加,以避免死鎖問題,主要是由於開發人員不知道他們在做什麼,恕我直言。