首页 > 代码库 > 多线程之线程同步
多线程之线程同步
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); } } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。