我用c#寫了乙個多執行緒的程式
這個程式開很多埠接收資料,每個埠分配了乙個執行緒接受
每個接受執行緒對應還有乙個執行執行緒,執行一些需要阻塞的函式
我接受網路的執行緒用迴圈的方式察看是否有資料。每個迴圈用thread.suspend()掛起
同樣,配套的阻塞程序也在不停迴圈,每個迴圈thread.suspend()掛起
另外有乙個總排程執行緒mainthread.這個執行緒在確定其他執行緒有了新的資料或任務時,用thread.resume()恢復執行緒執行。
mainthread不停執行乙個迴圈。每次thread.sleep(1).這樣可以在很多時間內進行響應。mainthread程序優先順序為最高
這個程式在開啟10個以內執行緒的時候執行時,情況還比較好。實時性很好
隨著開啟的執行緒增多,了100個後,程式實時性就不好,有時候個別執行緒速度緩慢!~
但是!!非常奇怪的是!!!作業系統的速度並不慢!
這個程式占用cpu就算150個執行緒,也只有不到5%的cpu占用
我首先將所有執行緒在作業系統的優先順序設定為最高,但問題依舊!
我懷疑是多執行緒鎖的問題,於是再開啟乙個同樣的程式只執行2個執行緒測試,但發現另外這個程式執行的實時效能也很差!~~
我奇怪了~~
現在我認為是很多執行緒頻繁排程而使得程式執行緩慢
不過我還是很疑惑cpu占用很少。這說明作業系統沒有盡可能的響應我程式的請求
我該怎麼辦呢????
請教乙個有關執行緒的問題
請教乙個有關執行緒的問題,我以前沒有用過執行緒,看msdn上的控制台例子,發現用斷點跟蹤和直接執行的結果不一樣。搞不清執行緒到底是如何執行的。我的 是 using system using system.threading namespace threadtest n i thread.sleep ...
乙個有趣的多執行緒問題
師弟問了個非常有趣的多執行緒問題,之前沒有關注,這裡寫下自己的心得。對於如下 include include include uint winapi fun1proc lpvoid lpparameter uint winapi fun2proc lpvoid lpparameter int ind...
乙個AJAX翻譯問題的請教
原文 s built from the beginning to consume data and not 我的譯文 ajax web應用相對於標準的桌面應用其乙個主要的好處在於它構建的初衷是消費資料而不是消費文件 譯註 這裡 消費 是指訪問和顯示資料,文件 是指傳統桌面的文件,例如 word,pd...