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