多執行緒中 ManualResetEvent 的用法

2022-01-11 16:01:38 字數 1117 閱讀 8944

///

///手動重啟

/// private manualresetevent manualreset = new manualresetevent(false);

if

(suspend)

suspendcommand = new relaycommand(o => );

restorecommand = new relaycommand(o=> );

它可以通知乙個或多個正在等待的執行緒已發生事件,允許執行緒通過發訊號互相通訊,來控制線程是否可心訪問資源

manualresetevent manualreset = new manualresetevent(false);

構造函式引數為 false:代表無訊號,true:代表有訊號

當無訊號時,manualreset.waitone(); 代表沒人通知它,所以它預設就是阻塞狀態。呼叫set()方法後代表有人通知它來訊號了,它將停止阻塞。

當有訊號時,manualreset.waitone(); 代表有人通知它,它將無阻塞。 呼叫reset()方法代表有人通知它現在訊號沒了,它將繼續開始阻塞。

在多執行緒開發中,時常用到 manualresetevent 與 autoresetevent  。 它們如同道路交通中的訊號燈。兩者之間有什麼區別呢?

共同點:

均繼承 eventwaithandle 介面,因此,均具有以下功能:

reset() //紅燈

set() //綠燈

waitone() // 等待訊號

不同點:

autoresetevent   收到 set 後 , 一次只能執行乙個執行緒,其它執行緒繼續 waitone 。

manualresetevent  收到 set 後,所有處理 waitone 狀態執行緒均繼續執行。

參考文章:

執行圖說明

python中多執行緒 Python之多執行緒

python之多執行緒 一 概念 1 多工可以由多程序完成,也可以由乙個程序內的多執行緒完成。程序是由若干的執行緒組成,乙個程序至少有乙個程序。執行緒是作業系統直接支援的執行單元,天賜高階預壓通常都是內建多執行緒的支援,python的執行緒是真正的posix thread而不是模擬出來的執行緒。2 ...

多執行緒 多執行緒原理

我們首先要知道什麼是多執行緒,說白了就是多個執行緒,執行緒是什麼呢,其實就是程序執行的途徑,那麼說道這裡我們又引入了乙個新的名字,就是程序,那麼我們來看看什麼是程序,其實我們自己也能看到,啟動電腦的任務管理器,我們就可以看到程序選項,裡面是我們電腦所有的程序,我們會發現有很多的程序.簡單地說就是程序...

Python多執行緒與多執行緒中join 的用法

文章 python多執行緒與多程序中join 方法的效果是相同的。下面僅以多執行緒為例 首先需要明確幾個概念 知識點一 當乙個程序啟動之後,會預設產生乙個主線程,因為執行緒是程式執行流的最小單元,當設定多執行緒時,主線程會建立多個子執行緒,在python中,預設情況下 其實就是setdaemon f...