參考資料:
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...