嘗試實現乙個簡單的threadpool

2021-10-08 09:33:33 字數 1504 閱讀 6847

參考資料:

c++高併發多執行緒學習(一)

c++ 併發程式設計[part 2]

標頭檔案:

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

class

task

~task()

virtual

void

run()=

0;// the specific work is realized by the developer};

//從task類繼承,實現run()

class

mytask

:public task

~mytask()

;virtual

void

run(

)private

:int number;};

class

threadpool

;

原始檔:

#include

"threadpool.h"

threadpool::

threadpool

(int threadcount)

}threadpool::

~threadpool()

while

(!m_taskque.

empty()

)}}void threadpool::

addtask

(task* ptask)

else

return

; m_threadcondition.

notify_one()

;}void threadpool::

run())

;if(m_taskque.

empty()

)continue

; task* ptask = m_taskque.

front()

; m_taskque.

pop();

lock.

unlock()

;//不解鎖的話,是在task的run結束後才解鎖任務佇列,實際上只有乙個執行緒在執行任務

if(ptask)

this_thread::

sleep_for

(chrono::

milliseconds(2

));}

}

測試:

threadpool pool(4

);for(

int i=

0; i<

1000

; i++

)

希望給予指正

乙個簡單的Matrix實現

我們直接來看 吧 matrix.h pragma once include using namespace std 矩陣類 class matrix 下面是實現和測試的 matrix.cpp include matrix.h include include matrix matrix void ma...

LinkList的乙個簡單實現

鏈式線性表是資料結構裡很簡單但也是很常見的資料結構,相比順序儲存的線性表,可以更快的實現新增和刪除操作,但讀取速度比順序結構會慢。鏈式線性表的關鍵在於,每個資料儲存為節點形式。不僅僅儲存有資料,還有乙個引用 next 指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶 迴圈鍊錶等等。基本原理一樣,只...

實現乙個簡單的 shared ptr

智慧型指標的作用有如同指標,但會記錄有多少個 shared ptrs 共同指向乙個物件。這便是所謂的引用計數。一旦最後乙個這樣的指標被銷毀,也就是一旦某個物件的引用計數變為 0,這個物件會被自動刪除。shared ptr 的實現機制其實就是在拷貝構造時使用同乙份引用計數。同乙個 shared ptr...