執行緒的數量

2021-06-19 18:22:17 字數 499 閱讀 5885

在計算密集型的程式中,最佳執行緒數就是cpu的核數*個數

這是因為在smp(對稱多處理器)環境下,每個cpu都有乙個可執行佇列(run_queue)。如果乙個程序處於task_running狀態(可執行狀態)則它會被加入到其中乙個run_queue(且同一時刻僅會被加入到乙個run_queue),以便讓排程程式安排它在這個run_queue對應的cpu上面執行。乙個程序一旦被安排在某個cpu上執行,往後程序排程程式也會將它安排在相同的cpu上執行。每隔 200ms,處理器都會檢查 cpu 的負載是否不均衡;如果不均衡,linux會將任務從負載重的 cpu 上移動到負載輕的 cpu 上。

所以小修正一下:

最佳執行緒數 =  ((執行緒等待時間+執行緒cpu時間)/執行緒cpu時間) * cpu數量。

對於計算密集型的,可以近似認為cpu被充分利用。所以是cpu的個數。

對於io密集型的,這個值可以略微大一些。

多執行緒 設定執行緒池執行緒數量

一 需求 web server通常有個配置,最大工作執行緒數,後端服務一般也有個配置,工作執行緒池的執行緒數量,這個執行緒數的配置不同的業務架構師有不同的經驗值,有些業務設定為cpu核數的2倍,有些業務設定為cpu核數的8倍,有些業務設定為cpu核數的32倍。工作執行緒數 的設定依據是什麼,到底設定...

JUC 執行緒池數量

去乙個網頁抓資料儲存到資料庫中,這個過程也就1秒中吧 執行緒池fixedthreadpool配製多少合適?如果是cpu密集型應用,則執行緒池大小設定為n 1 n為cpu的核數 如果是io密集型應用,則執行緒池大小設定為2n 1 這裡去乙個網頁抓資料 需要建立http請求響 io 應後拿到資料,然後再...

執行緒池執行緒數量優化設計

實際編碼過程中,不能一味的只進行執行緒池優化效能而不關注具體的設計細節。執行緒池執行緒數量需要根據實際專案中任務數量等進行乙個估算,使得系統的設計效能趨近於我們所想的方向,而不是隨便給乙個數值,但是不進行系統的最大瓶頸的控制。廢話不多說 轉個比較詳細的效能估算思路 jdk1.5中引入了強大的conc...