Monitor.PulseAll(Object) Metoda

Definicja

Powiadamia wszystkie oczekujące wątki zmiany stanu obiektu.Notifies all waiting threads of a change in the object's state.

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.The object that sends the pulse.

Wyjątki

Parametr obj ma wartość null.The obj parameter is null.

Wątek wywołujący nie jest obiektem blokady określonego obiektu.The calling thread does not own the lock for the specified object.

Uwagi

Wątek, który jest aktualnie właścicielem blokady określonego obiektu wywołuje tę metodę, aby sygnalizować wszystkie wątki oczekujące na uzyskanie blokady obiektu.The thread that currently owns the lock on the specified object invokes this method to signal all threads waiting to acquire the lock on the object. Po wysłaniu sygnału oczekujące wątki są przenoszone do kolejki gotowości.After the signal is sent, the waiting threads are moved to the ready queue. Gdy wątek, który wywołał PulseAll zwalnia blokadę, Następny wątek w kolejce gotowej uzyskuje blokadę.When the thread that invoked PulseAll releases the lock, the next thread in the ready queue acquires the lock.

Należy zauważyć, że zsynchronizowany obiekt zawiera kilka odwołań, w tym odwołanie do wątku, w którym aktualnie znajduje się blokada, odwołanie do kolejki gotowości zawierającej wątki, które są gotowe do uzyskania blokady, oraz odwołanie do oczekującej kolejki, która zawiera wątki czekające na powiadomienie zmiany stanu obiektu.Note that a synchronized object holds several references, including a reference to the thread that currently holds the lock, a reference to the ready queue, which contains the threads that are ready to obtain the lock, and a reference to the waiting queue, which contains the threads that are waiting for notification of a change in the object's state.

Metody Pulse, PulseAlli Wait muszą być wywoływane z poziomu synchronizowanego bloku kodu.The Pulse, PulseAll, and Wait methods must be invoked from within a synchronized block of code.

Uwagi dotyczące metody Pulse wyjaśniają, co się dzieje, jeśli Pulse jest wywoływana, gdy nie oczekuje żadnych wątków.The remarks for the Pulse method explain what happens if Pulse is called when no threads are waiting.

Aby sygnalizować pojedynczy wątek, użyj metody Pulse.To signal a single thread, use the Pulse method.

Dotyczy

Zobacz też