Monitor.PulseAll(Object) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Уведомляет все ожидающие потоки об изменении состояния объекта.
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)
Параметры
- obj
- Object
Объект, посылающий импульс.
Исключения
Параметр obj
имеет значение null
.
Вызывающий поток не владеет блокировкой для указанного объекта.
Комментарии
Поток, которому в настоящее время принадлежит блокировка указанного объекта, вызывает этот метод, чтобы сигнализировать всем потокам, ожидающим получения блокировки объекта. После отправки сигнала потоки ожидания перемещаются в готовую очередь. Когда поток, вызывающий PulseAll
блокировку, освобождает блокировку, следующий поток в готовой очереди получает блокировку.
Обратите внимание, что синхронизированный объект содержит несколько ссылок, включая ссылку на поток, который в настоящее время содержит блокировку, ссылку на готовую очередь, содержащую потоки, готовые к получению блокировки, и ссылку на очередь ожидания, содержащую потоки, ожидающие уведомления об изменении состояния объекта.
Методы Pulseи , PulseAll
а Wait также методы должны вызываться из синхронизированного блока кода.
Примечания для Pulse метода объясняют, что происходит, если Pulse потоки не ожидают.
Чтобы сигнализировать об одном потоке Pulse
, используйте метод.