全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1839
推到 Plurk!
推到 Facebook!

請問一下os是否會限制單一程式可開啟的執行緒數??

答題得分者是:aftcast
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-01 11:56:33 IP:220.132.xxx.xxx 未訂閱

看到 "Windows 系統允許執行緒數量的上限? "
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=49849

請問一下os是否會限制單一程式可開啟的執行緒數??
當程式開超過時,會有何影響??

如果是會限制的話,是否會依電腦的等級( cpu、記憶体大小....)
給予的最大執行緒數會不同???
或者可以有api 或方法,可以去修改那一個數值!!

謝謝各位大大的指教~~

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-01 15:54:15 IP:61.229.xxx.xxx 未訂閱
1/ 就官方的說法(我曾電話問過),windows是沒有限制thread數的。
2/ 事實應該也沒有限制,這是指沒有一個隱藏的設定值在限制。但是,因為windows先天上一個process只能用2G,你就被限制住了。加上一個thread的stack預設是1mb,那就被限在2028個上。當然你可以去縮小stack的大小。但能縮多小? 總不可能是0吧,那thread都跑不起來了。
3/ 就經驗上來說,2028個thread我沒跑過,因為…一般的threa完成後用的資源都很大,加上cpu,mem等不可能到完美頂極。所以,一樣的程式在不同的機器上,我會調校其最大的thread數。也視cpu的個數決定。

結論: 不用考慮能開幾個,因為os本身的先天限制不是瓶頸。你的電腦的資源通常才是。也許再過個數10年後…個人pc變更強了。os的先天問題才會變成是瓶頸。
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-01 15:56:28 IP:61.229.xxx.xxx 未訂閱
補一下你的問題: 「開超過會怎樣?」

開超過的時候,通常就是你的電腦受不了的時候(不是os發現你超過,它也不會發現),於是…會怎樣?

不穩,不穩,當、當、當……
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-09-05 16:23:17 IP:202.39.xxx.xxx 未訂閱

可是為什麼使用到 580 個執行緒時,就會當機。

程式上是使用activeX 元件與 ip camera 連線,一個元件連線後會使用到七至八個執行緒,
但使用到八十個元件以上,程式就當掉了,連網卡也當了,一直查不出原因。
cpu(不超過50%,30~40% ) 及 ram (還有512mb) 都還沒有用盡。

所以推測是限制的問題,各位先進是否有更好的推測及姐決之道,謝謝!!

系統時間:2024-05-13 0:03:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!