Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1214 of 1492 menu
◀ ▶

PulseAll

При одном ожидающем PulseAll ведёт себя как Pulse.

Синтаксис

Monitor.PulseAll(gate);

Пример

Давайте заменим Pulse на PulseAll в рабочем примере:

using System; using System.Threading; class Program { static void Main() { var gate = new object(); bool ready = false; var worker = new Thread(() => { lock (gate) { ready = true; Monitor.PulseAll(gate); } }); worker.Start(); lock (gate) { while (!ready) Monitor.Wait(gate); } worker.Join(); Console.WriteLine(ready); } }

Результат выполнения кода:

True

Пример

Давайте вызовем PulseAll вне lock:

using System; using System.Threading; class Program { static void Main() { var gate = new object(); try { Monitor.PulseAll(gate); Console.WriteLine("ok"); } catch (SynchronizationLockException) { Console.WriteLine("fail"); } } }

Результат выполнения кода:

"fail"

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить