你的位置:首页 > 软件开发 > ASP.net > 细说.NET中的多线程 (五 使用信号量进行同步)

细说.NET中的多线程 (五 使用信号量进行同步)

发布时间:2015-11-02 21:34:01
上一节主要介绍了使用锁进行同步,本节主要介绍使用信号量进行同步使用EventWaitHandle信号量进行同步EventWaitHandle主要用于实现信号灯机制。信号灯主要用于通知等待的线程。主要有两种实现:AutoResetEvent和ManualResetEvent。Aut ...

上一节主要介绍了使用锁进行同步,本节主要介绍使用信号量进行同步

使用EventWaitHandle信号量进行同步

EventWaitHandle主要用于实现信号灯机制。信号灯主要用于通知等待的get='_blank'>线程。主要有两种实现:AutoResetEvent和ManualResetEvent。

AutoResetEvent

AutoResetEvent从字面上理解是一个自动重置的时间。举个例子,假设有很多人等在门外,AutoResetEvent更像一个十字旋转门,每一次只允许一个人进入,进入之后门仍然是关闭状态。

下面的例子演示了使用方式:

using System;using System.Threading;class BasicWaitHandle{  static EventWaitHandle _waitHandle = new AutoResetEvent(false);  static void Main()  {    for (int i = 0; i < 3; i++)      new Thread(Waiter).Start();    for (int i = 0; i < 3; i++)    {      Thread.Sleep(1000);         // Pause for a second...      Console.WriteLine("通知下一个线程进入");      _waitHandle.Set();          // Wake up the Waiter.    }    Console.ReadLine();  }  static void Waiter()  {    var threadId = Thread.CurrentThread.ManagedThreadId;    Console.WriteLine("线程 {0} 正在等待", threadId);    _waitHandle.WaitOne();        // 等待通知    Console.WriteLine("线程 {0} 得到通知,可以进入", threadId);  }}

原标题:细说.NET中的多线程 (五 使用信号量进行同步)

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。