Monitor.PulseAll(Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Powiadamia wszystkie oczekujące wątki o zmianie stanu obiektu.
public:
static void PulseAll(System::Object ^ obj);
public static void PulseAll (object obj);
static member PulseAll : obj -> unit
Public Shared Sub PulseAll (obj As Object)
Parametry
- obj
- Object
Obiekt, który wysyła impuls.
Wyjątki
Parametr obj
to null
.
Wątek wywołujący nie jest właścicielem blokady dla określonego obiektu.
Uwagi
Wątek, który obecnie jest właścicielem blokady w określonym obiekcie, wywołuje tę metodę, aby zasygnalizować wszystkie wątki oczekujące na uzyskanie blokady obiektu. Po wysłaniu sygnału wątki oczekujące zostaną przeniesione do gotowej kolejki. Gdy wątek, który wywołał PulseAll
, zwalnia blokadę, następny wątek w kolejce gotowej uzyskuje blokadę.
Należy pamiętać, że zsynchronizowany obiekt zawiera kilka odwołań, w tym odwołanie do wątku, które obecnie przechowuje blokadę, odwołanie do gotowej kolejki, która zawiera wątki, które są gotowe do uzyskania blokady, oraz odwołanie do kolejki oczekującej, która zawiera wątki oczekujące na powiadomienie o zmianie stanu obiektu.
Metody Pulse, PulseAll
i Wait muszą być wywoływane z poziomu zsynchronizowanego bloku kodu.
Uwagi dotyczące Pulse metody wyjaśniają, co się dzieje, jeśli Pulse jest wywoływane, gdy nie czekają wątki.
Aby zasygnalizować pojedynczy wątek, użyj Pulse
metody .