主題 乙個簡單的linux執行緒池

2021-05-22 09:11:25 字數 964 閱讀 6188

執行緒池:簡單地說,執行緒池 就是預先建立好一批執行緒,方便、快速地處理收到的業務。比起傳統的到來乙個任務,即時建立乙個執行緒來處理,節省了執行緒的建立和**的開銷,響應更快,效率 更高。

在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...

乙個簡單的執行緒池

最近自己,很煩所以超級久沒學習了,今天趁著抗戰七十周年放三天假,趕緊看下書。廢話不多說。今天,介紹乙個簡單的執行緒池。首先說明什麼是執行緒池,執行緒池 是包含若干個執行緒,來處理多個任務的執行緒集合。它的目的是用來處理,大量的相對短暫的任務。這裡我們先來解釋下兩個概念,什麼叫大量呢?對於執行緒來說,...