c语言 多个线程对同一变量执行memcpy_手把手带你实现线程池
執行與任務分離的組件— 線程池
wangbojing/threadpool?github.com多線程技術主要解決了處理器單元內多個線程執行的問題,它可以顯著的減少處理器單元的閑置時間,增加處理器單元的吞吐能力。線程池是多線程編程的一個必要組件,并且對于很多編程人員都是透明的,更是神秘的。
線程池的概念,是一個用來管理一組執行任務線程的工具。既然是管理工具,那么該工具管理是用來管理任務與執行的。如圖一線程池組件拓撲圖,執行隊列(Workers),任務隊列(Jobs)和池管理(Pool Manager)三部分組成。
執行隊列(Workers)是用來存放運行線程的隊列。
任務隊列(Jobs)是用來存放需要被執行的任務隊列。
池管理(Pool Manager)主要是管理執行隊列的執行順序,執行任務的時間長短,對長時間沒有使用的執行單元進行釋放,執行單元滿負荷運行的時及時添加執行單元;記錄未執行的任務數量,對新任務入隊,即將執行的任務出隊等等。
圖一 線程池組件拓撲圖執行隊列(Workers)中的每一個執行單元(Worker)由哪些元素組成?線程ID,退出標志。
任務隊列(Jobs)中的每一個任務(Jobs)的組成元素?執行每一個任務的具體執行函數,每一個任務的執行參數。
池管理(Pool Manager)由哪些元素組成?每一個新任務添加與執行時的移除用的互斥鎖,每一個線程掛起的時所等待的條件變量。
根據分析如圖二線程池的類圖。
圖二線程池的類圖到這里一個簡單的線程池就已經可以呼之欲出了。以下為實現代碼
#include這樣的線程池還是只是一個Demo,原因有如下幾點需要我們值得改進的。
針對于以上幾點問題,改進了一版線程池
#include總結
以上是生活随笔為你收集整理的c语言 多个线程对同一变量执行memcpy_手把手带你实现线程池的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫威发布《蚁人与黄蜂女:量子狂潮》最新预
- 下一篇: jtextpane设置不能选中_在Bri