多執行緒程式設計時,最佳執行緒數目與什麼有關,核數,還有其他的嗎?

時間 2021-05-31 05:23:51

1樓:Name5566

我所了解到的原則是:活躍執行緒數為 CPU(核)數時最佳。過少的活躍執行緒導致 CPU 無法被充分利用,過多的活躍執行緒導致過大的執行緒上下文切換開銷。

首先執行緒應該是活躍的,處於 IO 的執行緒,休眠的執行緒等均不消耗 CPU。在實際環境中,當前活躍執行緒數一直在變化,很多活躍執行緒可能因為需要進行 IO 處理或等待資源而處於非活躍狀態,假如說執行緒的數量等於 CPU(核)數,這就意味著活躍執行緒數小於 CPU(核)數。這就導致有一些文件建議使用 CPU * 2 + 2 之類的規則來確定執行緒數量,但是實際需要的執行緒數和執行緒實際工作內容有關,執行緒如果一直處於活躍狀態,那麼執行緒數量達到或略高於 CPU(核)數能較為充分利用 CPU,執行緒如果常常需要進行等待而處於非活躍狀態,這時候執行緒數應該較多才能保證存在足夠多的活躍執行緒以充分利用 CPU。

但這只是簡單考量,有時候實際中的情況更為複雜,必須考慮清楚執行緒到底會以何種行為工作,針對性的實驗得到乙個合理值是必要的。

關於多執行緒程式設計和CPU多核多執行緒的關係?

佐佐浪 具體到你的例子,修改優先順序和修改時間片是無法達到這個效果的。你需要做的是把你的計算部分做成並行的。單獨乙個執行緒是達不到你要的效果的。 棒子先生 首相我們了解下為什麼需要用到4核,這是由於不能盲目的提高CPU的主頻和頻寬,這樣會產生各種實際很難處理的問題,比如溫度飆公升等。舉例來說我們需要...

多執行緒網路程式設計中如何合理地選擇執行緒數?

jameswhale 若業務是CPU計算型,建立比CPU核多的執行緒的確是沒有意義的,徒增執行緒的切換開銷。若業務是IO密集型的,可以建立比CPU核數多一些的執行緒,實際經驗是一般設定為2倍。 戈君 需要的執行緒數 qps latency 單位秒 依據是little s law,類似的應用是tcp中...

學習c 多執行緒程式設計主要用pthread還是c 11中的thread類?

諸葛不亮 標準庫執行緒可以get id拿到pid t或者HANDLE,不影響你使用native api。然後用std方便的部分用std寫,用native方便的部分用native寫,這就叫合併兩個生態。反之則不行。完畢。 兩種都應該掌握 std thread在Linux平台上不過是對pthread的一...