在x86平台32位系統,系統占用2gb位址空間,使用者方式2gb。如果使用vs,鏈結程式開關/sack 或者/f可以設定執行緒堆疊大小,預設分配乙個執行緒的堆疊大小是1mb,當createthread引數的stacksize大小與鏈結程式設定的不一致時,採用的方法是誰大用誰的,所以用4kb修改當然不會有改變!理論上最大執行緒數=2gb/1mb=2048。
實際上這個使用者方式的2gb並不會全部用作執行緒堆疊。首先程式的**和資料、程序環境塊、執行緒環境塊、空指標區域等等也需要占用一定的位址空間;再者2gb只是虛擬記憶體,如果非分頁記憶體被用完,就無法再建立執行緒,這個與特定機器有關,所以不同機器上做最大執行緒數測試得到的數字可能不一樣。
預設每執行緒1mb堆疊的話,只能開2048執行緒(如果你的其它系統資源足夠的話)。要想開更多執行緒,只能修改每個執行緒的堆疊,但實際中是不推薦這樣做的,因為如果你的執行緒因為一些工作因為執行緒堆疊不夠的話,會導致整個程序崩潰.修改堆疊的方法好像只在xp或以上系統有效,windows 2000中不支援。
乙個程序最多能包含多少執行緒
小watch水平有限,希望大家多多指正文中的錯誤,共同進步 最近在學習os的多執行緒課程,第乙個實驗室關於windows的多執行緒,用mfc實現。實驗蠻簡單的,但是,我不由想到了,乙個程序最多能包含多少個執行緒。在網上查了查,貌似也沒找到多少這方面的資料。大部分都是關於伺服器多執行緒鏈結sever的...
Linux下最多有多少個程序
程序 系統分配資源的載體,是程式執行的例項 執行緒 程式執行的最小單元,是程序中的乙個實體用來執行程式,乙個系統中的程序數量肯定是有上限的,因為系統資源是有限的,同樣的道理,乙個程序中的執行緒資源也是有上限的。ulimit n可以檢視乙個程序最多可以開啟多少檔案描述符數,這個命令就可以檢視系統中的程...
實驗 Ubuntu 能開多少個視窗
今天 cb 上看到新聞,某人在 vista 下開 108 個視窗。我也想試一試我的 ubuntu 8.04 能夠開多少個。當然,像 ff 那樣的程式開多少個視窗都是乙個程序,那樣沒有意義。所以我把能開的程式幾乎全部開起來了。不過在此之前 compiz fusion 要關掉。除了全螢幕的程式以外,實在...