多线程之线程同步

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-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。