C 實現乙個簡易的執行緒池

2021-10-03 18:57:33 字數 1124 閱讀 2714

工作中需要用到多執行緒,就簡單實現了乙個簡易的執行緒池,直接上**記錄一下

#ifndef threadpool_h

#define threadpool_h

#include

#include

#include

#include

#include

#include

class

threadpool

;#endif

// threadpool_h

cpp

#include

"threadpool.h"

threadpool::

threadpool

(int threadcount)

threadpool::

~threadpool()

void threadpool::

start()

}void threadpool::

addtask

(const task& ta)

std::unique_lock

lck(m_mutex)

; taskqueue.

push

(ta)

; cond.

notify_one()

;}void threadpool::

stop()

for(

int i =

0; i < m_threadcount;

++i)

threads.

clear()

;}//跑任務的流程,如果有任務,就啟動乙個執行緒去跑,跑完了後檢測有沒有任務 有任務繼續跑,沒任務就等待

void threadpool::

runtask()

}}threadpool::task threadpool::

taketask()

task ta;if(

!taskqueue.

empty()

)return ta;

}

上述實現,可以建立乙個固定執行緒數的執行緒池,並且當所有任務完成後才會退出。

參考1:

參考2:

實現乙個簡易的執行緒池。

定義四個類 乙個內部類 乙個任務類 乙個測試類 乙個執行緒池類包含乙個內部類。任務類 任務類,檢查埠。author administrator public class scannertask public void starttask catch unknownhostexception e ca...

實現乙個執行緒池

一.執行緒最主要的三個同步機制 1.訊號量 2.互斥鎖 3.條件變數 二.對三個同步機制分別實現乙個包裝類 ifdef locker h define locker h include include 訊號量的封裝 class sem sem bool wait bool post private ...

執行緒池(一) 實現乙個簡單的執行緒池

我們知道頻繁的建立 銷毀執行緒是不可取的,為了減少建立和銷毀執行緒的次數,讓每個執行緒可以多次使用,我們就可以使用執行緒池,可以降低資源到的消耗。執行緒池裡面肯定有多個執行緒,那麼我們就簡單的用乙個陣列來儲存執行緒,那我們我們預設裡面有 5 個執行緒。那我們執行緒池裡只有五個執行緒能同時工作,那同時...