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

Объект, который ожидает поток.

Исключения

Параметр obj имеет значение null.

Вызывающий поток не владеет блокировкой указанного объекта.

Комментарии

Только текущий владелец блокировки может сигнализировать об объекте ожидания с помощью Pulse.

Поток, который в настоящее время владеет блокировкой указанного объекта, вызывает этот метод, чтобы сигнализировать следующему потоку в строке блокировки. После получения импульса поток ожидания перемещается в готовую очередь. При вызове потока, вызываемого Pulse блокировкой, следующий поток в готовой очереди (который не обязательно пульсировал поток) получает блокировку.

Это важно

Класс Monitor не поддерживает состояние, указывающее, что Pulse метод был вызван. Таким образом, если вы вызываете Pulse , когда потоки не ожидают, следующий поток, который вызывает Wait блоки, как если Pulse бы не был вызван. Если два потока используются Pulse и Wait взаимодействуют, это может привести к взаимоблокировке. Сравните это с поведением AutoResetEvent класса: если вы сигнализируете AutoResetEvent о вызове методаSet, и нет потоков ожидания, AutoResetEvent остается в сигнальном состоянии до вызова WaitOneWaitAnyпотока илиWaitAll. Выпуски AutoResetEvent , которые поток и возвращаются в состояние без знака.

Обратите внимание, что синхронизированный объект содержит несколько ссылок, включая ссылку на поток, содержащий блокировку, ссылку на готовую очередь, содержащую потоки, готовые к получению блокировки, и ссылку на очередь ожидания, которая содержит потоки, ожидающие уведомления об изменении состояния объекта.

Методы Pulse, PulseAll и Wait должны вызываться из синхронизированного блока кода.

Чтобы сигнализировать о нескольких потоках, используйте PulseAll этот метод.

Применяется к

См. также раздел