C 基礎 多執行緒筆記 四 執行緒池

2022-03-29 06:31:21 字數 2132 閱讀 9568

現在到了關於多線最簡單使用的最後一篇筆記。

無論從什麼角度來看,每一項事物都應該有其所在的空間,而對於執行緒來說,執行緒池就是它所存在的空間,或者叫容器了。

接下來,看看這個執行緒池是如何使用的吧!

概念:manualresetevent,通知乙個或多個正在等待的執行緒已發生事件

manualresetevent.set(),將事件狀態設定為終止狀態,允許乙個或多個等待執行緒繼續

threadpool.queueuserworkitem(…),將方法排入佇列以便執行,並指定包含所用資料的物件。

waithandle.waitall(…),等待指定陣列中的所有元素都收到訊號

說明:如果只是從**的使用上看,將乙個方法加入執行緒池,只需要一行threadpool.queueuserworkitem(《方法名》),再加上乙個manualresetevent物件,並不要忘記在方法執行完畢後,set一下,這個就可以了。

而對於更深乙個層次的使用,就需要對clr的遠行機制以及對個人所要應用的專案特性進行了解、深入了。但是這明顯不符合這篇筆記的主要目的,所以也就沒必要去深究它了。

如果想要更深入的了解,就去看上面已經給出的幾個大牛的文章吧~

**:

「官方示例」

// 此**的發布遵從

// microsoft 公共許可(ms-pl,的條款。

//using system;

using system.threading;

// fibonacci 類為使用輔助

// 執行緒首席執行官時間的 fibonacci(n) 計算提供了乙個介面。

// n 是為 fibonacci 建構函式提供的,此外還提供了

// 操作完成時物件發出的事件訊號。

// 然後,可以使用 fibofn 屬性來檢索結果。

public

class fibonacci

// 供執行緒池使用的包裝方法。

public

void threadpoolcallback(object threadcontext)

started...", threadindex);

_fibofn = calculate(_n);

console.writeline("thread result calculated...", threadindex);

_doneevent.set();

}// 計算第 n 個斐波納契數的遞迴方法。

public

int calculate(int n)

else

}public

int n }

private

int _n;

public

int fibofn }

private

int _fibofn;

manualresetevent _doneevent;

}public

class threadpoolexample

tasks...", fibonaccicalculations);

for (int i = 0; i < fibonaccicalculations; i++)

// 等待池中的所有執行緒執行計算...

waithandle.waitall(doneevents);

console.writeline("calculations complete.");

// 顯示結果...

for (int i= 0; ifibonacci() = ", f.n, f.fibofn);}}

}

「我的最簡**」

public

override

void operatthread()

waithandle.waitall(events);

console.writeline("complete");

}

「我的最簡**」workerclass

public

void do(object threadcontext)

成果:

C 基礎 多執行緒筆記 四 執行緒池

現在到了關於多線最簡單使用的最後一篇筆記。無論從什麼角度來看,每一項事物都應該有其所在的空間,而對於執行緒來說,執行緒池就是它所存在的空間,或者叫容器了。接下來,看看這個執行緒池是如何使用的吧!概念 manualresetevent,通知乙個或多個正在等待的執行緒已發生事件 manualresete...

c 執行緒池實現(四)執行緒池實現

前面已經說到了同步佇列的實現,下面來看執行緒池的實現。ifndef include threadpool define include threadpool include include include include include syncqueue.hpp namespace mythrea...

ios 多執行緒之四 執行緒鎖

假如我們在功能的實現過程中,類中有乙個全域性變數,我們建立了多個執行緒去同時改變或者使用這個變數,會出現什麼問題?執行緒鎖就是用來解決多執行緒之間對資源共享的問題 在上文 多執行緒之三 的基礎之上進行演示,模仿多個地點進行售票的案例。1 建立按鈕 問題 當多個執行緒執行某一塊相同 需要執行緒鎖進行保...