執行緒池:簡單地說,執行緒池 就是預先建立好一批執行緒,方便、快速地處理收到的業務。比起傳統的到來乙個任務,即時建立乙個執行緒來處理,節省了執行緒的建立和**的開銷,響應更快,效率 更高。
在linux中,使用的是posix執行緒庫,首先介紹幾個常用的函式:
1 執行緒的建立和取消函式
pthread_create
建立pthread_join
合併執行緒
pthread_cancel
取消執行緒
2 執行緒同步函式
pthread_mutex_lock
pthread_mutex_unlock
pthread_cond_signal
pthread_cond_wait
關於函式的詳細說明,參考man手冊
執行緒池的實現:
執行緒池的實現主要分為三部分,執行緒的建立、新增任務到執行緒池中、工作執行緒從任務佇列中取出任務進行處理。
主要有兩個類來實現,ctask,cthreadpool
/**執行任務的類,設定任務資料並執行
**/
任務類是個虛類,所有的任務要從ctask類中繼承 ,實現run介面,run介面中需要實現的就是具體解析任務的邏輯。m_ptrdata是指向任務資料的指標,可以是簡單資料型別,也可以是自定義的複雜 資料型別。
執行緒池類
/**執行緒池
**/
當執行緒池物件建立後,啟動一批執行緒,並把所有的執行緒放入空閒列表中,當有任務到達時,某乙個執行緒取出任務並進行處理。
執行緒之間的同步用執行緒鎖和條件變數。
這個類的對外介面有兩個:
addtask函式把任務新增到執行緒池的任務列表中,並通知執行緒進行處理。當任務到到時,把任務放入m_vectasklist任務列表中,並用 pthread_cond_signal喚醒乙個執行緒進行處理。
stopall函式停止所有的執行緒
執行緒池(一) 實現乙個簡單的執行緒池
我們知道頻繁的建立 銷毀執行緒是不可取的,為了減少建立和銷毀執行緒的次數,讓每個執行緒可以多次使用,我們就可以使用執行緒池,可以降低資源到的消耗。執行緒池裡面肯定有多個執行緒,那麼我們就簡單的用乙個陣列來儲存執行緒,那我們我們預設裡面有 5 個執行緒。那我們執行緒池裡只有五個執行緒能同時工作,那同時...
乙個簡單的執行緒池
話說這個執行緒池也寫了好久了 做簡單的東西的時候也在用,最近因為乙個失誤刪掉了自己的一些檔案導致重新寫了一遍 所以貼出來,以防萬一 並且跟大佬們交流 created by cxhmyself on 18 4 10.include 都需要與互斥量一起才能工作 include include inclu...
乙個簡單的執行緒池
最近自己,很煩所以超級久沒學習了,今天趁著抗戰七十周年放三天假,趕緊看下書。廢話不多說。今天,介紹乙個簡單的執行緒池。首先說明什麼是執行緒池,執行緒池 是包含若干個執行緒,來處理多個任務的執行緒集合。它的目的是用來處理,大量的相對短暫的任務。這裡我們先來解釋下兩個概念,什麼叫大量呢?對於執行緒來說,...