1.多執行緒在單核和多核cpu上的執行效率問題的討論
多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換那個執行而已,其實並沒有快(反而慢,涉及到切換執行緒的消耗)
多個cpu的話就可以在兩個cpu中同時執行兩個執行緒..............
但為什麼有時候執行緒數超過cpu核心數會更快呢?原因是這種程式的單個執行緒運算量不足以佔滿cpu乙個核心(比如存在大量io操作,io比較慢,是程式瓶頸)。
多執行緒的用處在於,做某個耗時的操作時,需要等待返回結果,這時用多執行緒可以提高程式併發程度。如果乙個不需要任何等待並且順序執行能夠完成的任務,用多執行緒簡直是浪費。
執行緒必然不是越多越好,執行緒切換也是要開銷的,當你增加乙個執行緒的時候,增加的額外開銷要小於該執行緒能夠消除的阻塞時間,這才叫物有所值。
什麼時候該使用多執行緒呢?這要分四種情況討論:
b.單核cpu——計算密集型任務。此時的任務已經把cpu資源100%消耗了,就沒必要也不可能使用多執行緒來提高計算效率了;相反,如果要做人機互動,最好還是要用多執行緒,避免使用者沒法對計算機進行操作。
c.單核cpu——io密集型任務,使用多執行緒還是為了人機互動方便,
d.多核cpu——io密集型任務,這就更不用說了,跟單核時候原因一樣。
所以我想到了自己學爬蟲的時候,寫了乙個多執行緒來爬取,其實我覺得它從網路上爬取資源與單執行緒的區別不是很大,主要是在i/0的時候,cpu處於空閒狀態,此時就可以交給其他執行緒來使用。(這裡是指單核cpu)
多執行緒在單核cpu與多核cpu下如何工作
1.多執行緒在單核和多核cpu上的執行效率問題的討論 a1 多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換那個執行而已,其實並沒有快 反而慢 多個cpu的話就可以在兩個cpu中同時執行了.a2 單核cpu上執行的多執行緒程式,同一時間只能乙個執行緒在跑,系統幫你切換執行緒而已,系統給每...
對於多執行緒程式,單核cpu與多核cpu是怎麼工作的
1.多執行緒在單核和多核cpu上的執行效率問題的討論 a1 多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換那個執行而已,其實並沒有快 反而慢 多個cpu的話就可以在兩個cpu中同時執行了.a2 單核cpu上執行的多執行緒程式,同一時間只能乙個執行緒在跑,系統幫你切換執行緒而已,系統給每...
單核 多核 多執行緒
1 鎖競爭 單核中,如果單個執行緒取得所,則獲取cpu執行時間,其他等待獲取鎖的執行緒被阻塞。使用了鎖,影響的只是枷鎖和解鎖的耗時,cpu始終執行。多核中,若2個 更多 執行緒使用同一把鎖,則會導致cpu飢餓。實際還是序列化執行!2 執行緒分解和執行的區別 對單核cpu,對客戶端軟體,採用多執行緒,...