日期:2014-05-17  浏览次数:20795 次

创建线程的最大数目
在windows下最多能够创建多少个线程?WHY?

------解决方案--------------------
默認情況下,一個線程的棧要預留1M的內存空間
而一個進程中可用的內存空間只有2G,所以理論上一個進程中最多可以開2048個線程
但是內存當然不可能完全拿來作線程的棧,所以實際數目要比這個值要小。
你也可以通過連接時修改默認棧大小,將其改的比較小,這樣就可以多開一些線程。
如將默認棧的大小改成512K,這樣理論上最多就可以開4096個線程。

即使物理內存再大,一個進程中可以起的線程總要受到2GB這個內存空間的限制。
比方說你的機器裝了64GB物理內存,但每個進程的內存空間還是4GB,其中用戶態可用的還是2GB。


如果是同一台機器內的話,能起多少線程也是受內存限制的。每個線程對象都要站用非頁面內存,而非頁面內存也是有限的,當非頁面內存被耗盡時,也就無法創建線程了。

如果物理內存非常大,同一台機器內可以跑的線程數目的限制值會越來越大。
請參考:http://topic.csdn.net/t/20040414/13/2963939.html