聽說windows操做系統中能夠容許的最大操做線程數是有限制的,默認狀況下,一個線程的棧要預留1M的內存空間,棧的分配是從高地址(棧頂)到低地址分配的,因此後來分配的j的地址就比i地址小。windows
能夠經過鏈接時修改默認棧大小,如將默認棧的大小改爲512K,這樣理論上最多就能夠開4096個線程。服務器
即便物理內存再大,一個進程中能夠起的線程總要受到2GB這個內存空間的限制。比方說你的機器裝了64GB物理內存,但每一個進程的內存空間仍是4GB,其中用戶態可用的仍是2GB。 async
若是物理內存很是大,同一臺機器內能夠跑的線程數目的限制值會愈來愈大。 spa
對於服務端,你的服務器端程序設計成:操作系統
來一個client鏈接請求則建立一個線程,那麼就會存在2000個限制(在硬件內存和CPU個數必定的狀況下)。.net
Linux中將每一個進程的線程最大數目定義爲1024,但實際上這個數值還受到整個系統的總進程數限制,查看線程的命令:線程
ps -eLf | grep echo |more設計
參考至 http://blog.csdn.net/vipfengxiao/article/details/6010986server