Pulse(lockObj)表示释放当前被lock的lockObj,容许其他线程调用。(相当于暂时挂起当前线程)
Wait(lockObj)表示等待当前被其他线程占用的lockObj。
下面的代码将会交替执行两个线程:
class TickTock
{
object lockOn = new object();
public void Tick(bool running)
{
lock (lockOn)
{
if (!running)
{
Monitor.Pulse(lockOn);
return;
}
Console.Write("Tick ");
Monitor.Pulse(lockOn);//let tock() run
Monitor.Wait(lockOn);//wait for tock() to complete
}
}
public void Tock(bool running)
{
lock (lockOn)
{
if (!running)
{
Monitor.Pulse(lockOn);
return;
}
Console.WriteLine("Tock");
Monitor.Pulse(lockOn);
Monitor.Wait(lockOn);
}
}
}
本文通过一个C#中的Tick-Tock示例介绍了如何使用Monitor类中的Pulse和Wait方法来实现线程间的同步。具体展示了如何使两个线程交替运行,并确保一个线程在另一个线程完成后继续执行。

被折叠的 条评论
为什么被折叠?



