1. 程式人生 > >多執行緒與多核執行效率

多執行緒與多核執行效率

1、多執行緒在單核和多核CPU上的執行效率問題的討論

多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換哪個執行而已,其實並沒有快(反而慢)。多個cpu的話就可以在多個cpu中同時執行了。單核CPU時使用多執行緒,通常是有執行緒要處於等待狀態。而對於普通的進度條更新類的,能夠簡單控制的(比如:在迴圈裡面手動處理訊息)就簡單控制,一般不使用執行緒,這樣可以提高程式的效能。並且避免掉不必要的執行緒同步問題。

2為什麼有時候執行緒數超過CPU核心數會更快呢?

原因是這種程式的單個執行緒運算量不足以佔滿CPU一個核心(比如存在大量IO操作,IO比較慢,是程式瓶頸)。多執行緒的用處在於,做某個耗時的操作時,需要等待返回結果,這時用多執行緒可以提高程式併發程度。如果一個不需要任何等待並且順序執行能夠完成的任務,用多執行緒簡直是浪費。

3、 執行緒越多越好嗎?什麼時候才有必要用多執行緒?

執行緒必然不是越多越好,執行緒切換也是要開銷的,當你增加一個執行緒的時候,增加的額外開銷要小於該執行緒能夠消除的阻塞時間,這才叫物有所值。

4、多核與多執行緒

多核指的是CPU有多個核心,多執行緒是程式有多個執行緒在同時執行。多核也要用多執行緒才能發揮優勢。同樣,多執行緒要在多核上才能真正有優勢。這點來說,對程式設計師不是透明的。程式設計師可以控制程式/執行緒在哪個CPU()上執行。使用者也可以控制程式在哪幾個核上執行。所以多核,多執行緒對使用者和程式設計師都不是透明的。程式設計師必須瞭解這方面的知識。才能讓程式最大限度的發揮機器的效能。