執行緒,限制的非同步操作

2022-01-10 22:54:15 字數 1031 閱讀 3418

非同步的計算限制操作要用其他執行緒執行,比如拼寫檢查,語法檢查,音訊轉碼等,為了設計和實現可伸縮性的、響應靈敏和可靠的應用程式和元件,執行緒池在多個cpu核心上排程任務,使多個執行緒能併發工作,從而高效率地使用系統資源,同時提公升應用程式的吞吐能力。

理解腦圖中線程的非同步操作能力,不外乎與計算機處於縝密計算與i/o操作,使用執行緒池,最大效率的使用計算機資源,並行處理能力。同時避免使用者模式與核心模式的上下文切換帶來的效能損失,從而導致大量執行緒處於閒置等待,而浪費系統資源。

掌握執行緒池的用途、開銷之外,最重要的還是以執行緒池管理,才能更好的控制不可**的錯誤,並加以治之。

執行緒池管理

要想合理地配置執行緒池,就必須首先分析任務特性,可以從以下幾個角度來分析。

cpu密集型任務應配置盡可能小的執行緒,如配置ncpu+1個執行緒的執行緒池。由於io密集型任務執行緒並不是一直在執行任務,則應配置盡可能多的執行緒,如2*n cpu。混合型的任務,如果可以拆分,將其拆分成乙個cpu密集型任務 和乙個io密集型任務,只要這兩個任務執行的時間相差不是太大,那麼分解後執行的吞吐量將高於序列執行的吞吐量。如果這兩個任務執行時間相差太大,則沒必要進行分解。建議使用有界佇列。

i/o bound 指的是系統的cpu效能相對硬碟/記憶體的效能要好很多,此時,系統運作,大部分的狀況是 cpu 在等 i/o (硬碟/記憶體) 的讀/寫,此時 cpu loading 不高。

cpu bound 指的是系統的 硬碟/記憶體 效能 相對 cpu 的效能 要好很多,此時,系統運作,大部分的狀況是 cpu loading 100%,cpu 要讀/寫 i/o (硬碟/記憶體),i/o在很短的時間就可以完成,而 cpu 還有許多運算要處理,cpu loading 很高。

C 多執行緒 限制執行緒數量

這裡需要用到互斥鎖mutex,條件變數condition variable,通用互斥鎖包裝器unique lock std unique lock也可以提供自動加鎖 解鎖功能,比std lock guard更加靈活。類 unique lock 是通用互斥包裝器,允許延遲鎖定 鎖定的有時限嘗試 遞迴鎖...

python多執行緒限制併發數示例

coding utf 8 usr bin env python import queue import threading import time prolock threading.lock 定義同時佇列數 queue queue.queue maxsize 10 定義任務初值值及最大值 task...

python多執行緒限制併發數示例

coding utf 8 usr bin env python import queue import threading import time prolock threading.lock 定義同時佇列數 queue queue.queue maxsize 10 定義任務初值值及最大值 task...