Pulse
Pulse без ожидающих никому не мешает; сигнал теряется.
Синтаксис
Monitor.Pulse(gate);
Пример
Давайте передадим сигнал ожидающему потоку:
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.Pulse(gate);
}
});
worker.Start();
lock (gate)
{
while (!ready)
Monitor.Wait(gate);
}
worker.Join();
Console.WriteLine(ready);
}
}
Результат выполнения кода:
True
Пример
Давайте вызовем Pulse без ожидающих внутри lock:
using System;
using System.Threading;
class Program
{
static void Main()
{
var gate = new object();
lock (gate)
{
Monitor.Pulse(gate);
Console.WriteLine("done");
}
}
}
Результат выполнения кода:
"done"
Смотрите также
-
Wait,
ожидание -
PulseAll,
массовое пробуждение -
AutoResetEvent,
автосброс -
Monitor,
Monitor