给定以下代码,当我按下 Enter 键时,阻塞条件正在发生变化:
class Program
{
static readonly object _locker = new object();
static bool _go;
static void Main()
{
new Thread(Work).Start();
Console.ReadLine();
lock (_locker)
{
_go = true;
Monitor.Pulse(_locker);
}
}
static void Work()
{
lock (_locker)
while (!_go)
Monitor.Wait(_locker);
Console.WriteLine("Woken!!!");
}
}
但是,如果我不使用Monitor.Wait
然后从未被调用,Monitor.Pulse
那么标志Console.WriteLine("Woken!!!");
似乎_go
没有改变。
有谁知道为什么?