單核CPU上運行的多線程程序, 同一時間只能一個線程在跑, 系統幫你切換線程而已, 系統給每個線程分配時間片來執行, 每個時間片大概10ms左右, 看起來像是同時跑, 但實際上是每個線程跑一點點就換到其它線程繼續跑,效率不會有提高,切換線程反倒會增加開銷。
爲什麼有時候線程數超過CPU內核數會更快呢?
原因是這種程序的單個線程運算量不足以佔滿CPU一個內核(比如存在大量IO操作,IO比較慢,是程序瓶頸)。
單核CPU上運行的多線程程序, 同一時間只能一個線程在跑, 系統幫你切換線程而已, 系統給每個線程分配時間片來執行, 每個時間片大概10ms左右, 看起來像是同時跑, 但實際上是每個線程跑一點點就換到其它線程繼續跑,效率不會有提高,切換線程反倒會增加開銷。
爲什麼有時候線程數超過CPU內核數會更快呢?
原因是這種程序的單個線程運算量不足以佔滿CPU一個內核(比如存在大量IO操作,IO比較慢,是程序瓶頸)。