Monitor.Pulse(Object) 方法

定義

通知等待佇列中的執行緒鎖定物件狀態變更。

public:
 static void Pulse(System::Object ^ obj);
public static void Pulse(object obj);
static member Pulse : obj -> unit
Public Shared Sub Pulse (obj As Object)

參數

obj
Object

執行緒正在等待的物件。

例外狀況

參數 objnull

呼叫執行緒不擁有指定物件的鎖。

備註

只有目前擁有鎖的人才能用 向等待的物體發出信號 Pulse

目前擁有指定物件鎖的執行緒會呼叫此方法,通知下一個執行緒的鎖。 收到脈衝後,等待的執行緒會被移至準備佇列。 當呼叫 Pulse 的執行緒釋放鎖時,準備佇列中的下一個執行緒(不一定是被脈衝的執行緒)會取得鎖。

Important

Monitor 類別不會維持表示該方法已被呼叫的狀態 Pulse 。 因此,如果你在沒有執行緒等待時呼叫 Pulse ,下一個呼叫 Wait 的執行緒會像 Pulse 從未被呼叫過一樣阻塞。 如果兩個執行緒同時使用 PulseWait 來互動,可能會導致死結。 與此形成對比的是類別的行為AutoResetEvent:若你呼叫 Set a AutoResetEvent 的方法,且沒有執行緒等待,該AutoResetEvent類別會保持訊號狀態,直到執行緒呼叫 WaitOneWaitAnyWaitAll。 它 AutoResetEvent 會釋放該執行緒,回到未訊號狀態。

請注意,同步物件會保留多個參考,包括目前持有鎖的執行緒參考、準備佇列(包含準備取得鎖的執行緒)以及等待佇列(等待物件狀態變更通知的執行緒)的參考。

必須在同步處理的程式代碼區塊內叫用PulsePulseAllWait方法。

要標示多條線程,請使用該 PulseAll 方法。

適用於

另請參閱