Windows 系統允許執行緒數量的上限? |
答題得分者是:Chris.Net
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
在實測 hao_chih 所發表的 ■【BCB】【發表】示範TThread+TList 模擬處理Message Queue,以防止重入
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=49757 時發現,當我啟用 Slow 模式,Timer 全開,讓執行緒的數量累加,同時打開工作管理員確認執行緒的數量(P.S. 我有按 Ctrl-Alt-T 在 BCB IDE 中查看,可是 IDE 好像只有列出操作中的執行緒...)。
在我的電腦(P4,512MB,XP HomeEd.)中當測試程式的 WaitingCount 一直累加,在 1995 以內時,工作管理員所記錄的執行緒數量值正好是 WaitingCount+1(主執行緒),可是當 WaitingCount 繼續累加到更大的數值如 2000,3000...,工作管理員所記錄的數值還是一樣 1996 個執行緒。
接著不再產生事件,讓它慢慢作完。結果,當工作管理員倒數到 40 左右時,測試程式也不再執行了。
我想應該是執行緒數量已達系統上限,讓程式運作已經異常了。
而在另一台電腦(也是P4,512MB,XP HomeEd.),工作管理員允許的執行緒上限是 2015 個。
當測試程式在這個上限值之前工作正常,一但超過,則會發生不可預期的結果。
而我的問題就是,Windows 系統允許執行緒數量的上限是多少? 沒空更新的網頁...
http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
Chris.Net
一般會員 發表:0 回覆:9 積分:6 註冊:2004-03-30 發送簡訊給我 |
createthread函數說明
在Remarks的第一段說明
每一個process能建立的thread上限是virtual memory的大小。
預設值是每一個thread佔1MB的stack空間,所以預設最多可以開2028個thread。調整預設的stack大小可以改變建立thread數量的上限。
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
感謝 Chris.Net 的回應。
■CreateThread
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createthread.asp
■Thread Stack Size
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/thread_stack_size.asp 我查了 VCL 原始碼,TThread 使用預設值,也就是 1MB,如果要每個 TThread 自定 Stack Size 那就需要改寫 TThread... 沒空更新的網頁...
http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |