①:什麼是執行緒上下文切換
②:什麼是cpu時間片
一,如果是cpu密集型作業------不能
假設一段耗時總共為10s的**(不涉及io操作),使用單執行緒執行,只需要10s的時間,當使用多執行緒執行時,就會涉及到執行緒的上下文切換,這時耗時肯定會超過10s的,所以這種情況下不能提高效率。
二,如果是io密集型的作業----能
同理,一段**(執行緒使用cpu執行2s的運算,然後執行3秒的io操作,接下來重複這個操作一次)總耗時10s,其中io操作就會占用6s的時間。
使用單執行緒執行時,序列執行總耗時為10s。
現在使用2個執行緒執行,當執行緒一執行2s的cpu運算時,執行緒二也會獲得cpu的時間片進行運算。也就是兩個執行緒會並行執行,當然,因為是單核cpu,所以每個執行緒2s的運算時間是肯定的,執行完cpu的運算的時間(2*2)是需要4s的,假設執行緒上下文切換的時間為0.5s,然後每個執行緒等待io操作的時間是一樣的(3s),那麼執行完這段**的所需時間(4s+0.5s+3s)也就是7.5秒。這種情況下多執行緒肯定是能提高效率的。
當然,io操作執行的時間越長,使用多執行緒就越有效。
單核cpu與多執行緒體會
1.多執行緒在單核和多核cpu上的執行效率問題的討論 多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換那個執行而已,其實並沒有快 反而慢,涉及到切換執行緒的消耗 多個cpu的話就可以在兩個cpu中同時執行兩個執行緒.但為什麼有時候執行緒數超過cpu核心數會更快呢?原因是這種程式的單個執行...
多執行緒在單核cpu與多核cpu下如何工作
1.多執行緒在單核和多核cpu上的執行效率問題的討論 a1 多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換那個執行而已,其實並沒有快 反而慢 多個cpu的話就可以在兩個cpu中同時執行了.a2 單核cpu上執行的多執行緒程式,同一時間只能乙個執行緒在跑,系統幫你切換執行緒而已,系統給每...
對於多執行緒程式,單核cpu與多核cpu是怎麼工作的
1.多執行緒在單核和多核cpu上的執行效率問題的討論 a1 多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換那個執行而已,其實並沒有快 反而慢 多個cpu的話就可以在兩個cpu中同時執行了.a2 單核cpu上執行的多執行緒程式,同一時間只能乙個執行緒在跑,系統幫你切換執行緒而已,系統給每...