C 簡易執行緒池

2022-10-09 19:54:11 字數 1141 閱讀 8865

原理:

thread a = thread(theadproc,param);

執行緒構造以後,執行緒執行的函式就不能改變了,一旦函式執行結束,執行緒也就終止。

所以要實現執行緒不停的切換任務,就只能對param動手了。

讓param變成乙個裝有函式指標以及該函式執行所需引數的資料結構。

讓執行緒池和執行緒通過param引數來交換資料,分配任務。

1.函式指標。

**:

#include#includeusing namespace std;

int add(int a,int b)

int main()

;//簡單起見,就讓每個執行緒做一樣的任務

void print(int num)

using print = void(*)(int);

void threadtowork(work &work)

else

}}struct threadpool

{ queueq;//任務佇列,也沒有設定容量

thread xcarr[threa_num];//執行緒控制代碼陣列

work h**ework[threa_num];//每個執行緒的資料

確實是夠簡易的,不過好在只是簡單的列印還是足夠勝任了。

過於簡易,所以問題很多,建立的執行緒都還沒結束呢,主線程就完了。

還要分配任務的時候,修改了執行緒2的資料。但是可能釋放的訊號量給了執行緒3呢。

此外,都只能執行這一固定的列印任務,完全不能做其他活,因為寫死了只能print。

好在,簡單的列印完成了。說明思路是沒錯的。只是效率之類的問題還沒有考慮。看來執行緒池,關鍵就在於執行緒池如何與建立的執行緒進行通訊和交換資料了。

c 簡易執行緒池

以前做均衡負載的時候就想寫過執行緒池,那時候沒有很理解就沒寫,最近嘗試自己搭個高併發的小型伺服器,又學習了下執行緒池,但感覺網上的大多涉及的技術點比較多,對於初學者不容易理解,這裡我也分享下我自己寫的簡易執行緒池,除錯環境在ubuntu18.04。該執行緒池通過設定任務函式 搬運工 不斷地訪問等待佇...

簡易執行緒池實現

是其實也就是任務分發器,池子裡預先跑著n個執行緒,可以往池子裡提交任務。相對執行緒不斷建立和銷毀,特別對於大量的短時任務,執行緒池顯然是很節省資源的。直接上 include include include include include include typedef void job void d...

python手寫簡易執行緒池

bin env python coding utf 8 import queue import threading from contextlib import contextmanager import time 停止事件 stopevent object class threadpool obj...