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 , используйте этот метод.