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 пока поток не вызовет WaitOne, WaitAnyили WaitAll. Освобождает AutoResetEvent этот поток и возвращается в состояние без знака.
Обратите внимание, что синхронизированный объект содержит несколько ссылок, включая ссылку на поток, который в настоящее время содержит блокировку, ссылку на готовую очередь, которая содержит потоки, готовые к получению блокировки, и ссылку на очередь ожидания, которая содержит потоки, ожидающие уведомления об изменении состояния объекта.
Методы Pulse
, PulseAllи Wait должны вызываться из синхронизированного блока кода.
Чтобы сообщить нескольким потокам PulseAll , используйте метод .
Өнім | Нұсқалар |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |
.NET кері байланысы
.NET — бастапқы коды ашық жоба. Пікір қалдыру үшін сілтемені таңдаңыз: