AutoResetEvent 与 ManualResetEvent区别

原创 2005年03月02日 11:15:00

在C#多线程编程中,这两个类几乎是不可或缺的,他们的用法/声明都很类似,那么区别在哪里了?

Set方法将信号置为发送状态 Reset方法将信号置为不发送状态 WaitOne等待信号的发送

其实,从名字就可以看出一点端倪  ,一个手动,一个自动,这个手动和自动实际指的是在Reset方法的处理上,如下面例子

public AutoResetEvent autoevent=new AutoResetEvent(true);

public ManualResetEvent manualevent=new ManualResetEvent(true);

默认信号都处于发送状态,

autoevent.WaitOne();

manualevent.WaitOne();

如果 某个线程调用上面该方法,则当信号处于发送状态时,该线程会得到信号,得以继续执行

差别就在调用后,autoevent.WaitOne()每次只允许一个线程进入,当某个线程得到信号(也就是有其他线程调用

了autoevent.Set()方法后)后,autoevent会自动又将信号置为不发送状态,则其他调用WaitOne的线程只有继续等待.也就是说,autoevent一次只唤醒一个线程

而manualevent则可以唤醒多个线程,因为当某个线程调用了set方法后,其他调用waitone的线程获得信号得以继续执行,而manualevent不会自动将信号置为不发送.也就是说,除非手工调用了manualevent.Reset().方法,则

manualevent将一直保持有信号状态,manualevent也就可以同时唤醒多个线程继续执行

[WF4.0 实战] AutoResetEvent详解(线程独占访问资源)

由来:   在学习工作流的过程中,宿主程序中会出现这么一段代码 staticAutoResetEvent instanceUnloaded = new AutoResetEvent(false);...

浅谈AutoResetEvent的用法

using System; using System.Threading; namespace AutoResetEvent_Examples {     class MyMainClas...

AutoResetEvent.WaitAll 等到人生三大事,然后大笑开心。

例子描述:人生都有追求幸福理想,下面就用三条线程得到房子,车子,妻子,等待全部得到后,显示人生圆满。   using System; using System.Collections.Gener...

多线程通中的AutoResetEvent与ManualResetEvent使用例子

AutoResetEvent 与 ManualResetEvent 多线程通过发信号互相通信
  • herryz
  • herryz
  • 2010年10月21日 15:04
  • 1384

C#关于AutoResetEvent的使用介绍[转载]

AutoResetEvent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果 AutoR...

ManualResetEvent和AutoResetEvent的区别

在讨论这个问题之前,我们先了解这样一种观点,线程之间的通信是通过发信号来进行沟通的。(这不是废话)         先来讨论ManualResetEvent,讨论过程中我会穿插一些AutoResetE...

AutoResetEvent用法(一)

AutoResetEvent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果 AutoR...

ManualResetEvent和AutoResetEvent的区别

在讨论这个问题之前,我们先了解这样一种观点,线程之间的通信是通过发信号来进行沟通的。(这不是废话)         先来讨论ManualResetEvent,讨论过程中我会穿插一些AutoResetE...

AutoResetEvent与ManualResetEvent区别

【转载】AutoResetEvent与ManualResetEvent区别 ManualResetEvent 和 AutoResetEvent 从字面意思看,它们都表示是一个事件(Event)...
  • ymmeng
  • ymmeng
  • 2012年10月08日 15:54
  • 68

C#AutoResetEvent和ManualResetEvent的区别

一:终止状态和非终止状态     首先说说线程的终止状态和非终止状态。AutoResetEvent和ManualResetEvent的构造函数中,都有bool变量来指明线程的终止状态和非终止状态。...
  • pyrtvu
  • pyrtvu
  • 2011年11月04日 01:13
  • 5917
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AutoResetEvent 与 ManualResetEvent区别
举报原因:
原因补充:

(最多只允许输入30个字)