如果單執行緒花費了多核 CPU 25% 的作業量,那么 4 個執行緒會填滿 CPU 嗎?
除了 4 個執行緒,我還能用 CPU 做其他事情嗎?
uj5u.com熱心網友回復:
如果一個執行緒使用了 25% 的 CPU,那么剩下的 75% 是什么?
如果答案是,其他 75% 的時間都沒有使用(如果 CPU 有 75% 的時間處于空閑狀態),那么單執行緒不是cpu-bound。也就是說,除了 CPU 周期的可用性之外,還有其他東西限制了程式的速度。
什么是阻塞執行緒?可能執行緒正在等待一些資源;來自網路、磁盤 I/O、用戶輸入等的訊息。不管是什么,如果至少有四個,并且如果您的程式可以構造為同時使用其中四個,那么運行四個執行緒可能會允許程式運行速度提高四倍。
例如,如果您的程式是某種服務器,并且它花費大量時間等待來自客戶端的訊息,那么添加更多執行緒將允許它同時等待更多訊息,這將提高吞吐量。
一個反例是,如果您的程式正在處理來自單個磁盤檔案的資料,并且它大部分時間都在等待來自磁盤的資料。由于只有一個磁盤,并且磁盤只能運行這么快,因此在這種情況下添加更多執行緒將無濟于事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422761.html
標籤:
上一篇:從任務內部呼叫靜態方法
