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也就可以同时唤醒多个线程继续执行

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#多线程同步事件及等待句柄

最近捣鼓了一下多线程的同步问题,发现其实C#关于多线程同步事件处理还是很灵活,这里主要写一下,自己测试的一些代码,涉及到了AutoResetEvent 和 ManualResetEvent,当然还有也...

C#信号同步类型AutoResetEvent , ManualResetEvent用法和区别

AutoResetEvent 和 ManualResetEvent都继承于EventWaitHandle.两个类都ke

C#AutoResetEvent和ManualResetEvent的区别

一:终止状态和非终止状态     首先说说线程的终止状态和非终止状态。AutoResetEvent和ManualResetEvent的构造函数中,都有bool变量来指明线程的终止状态和非终止状态。...
  • pyrtvu
  • pyrtvu
  • 2011-11-04 01:13
  • 5889

ManualResetEvent和AutoResetEvent的区别

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

AutoResetEvent与ManualResetEvent区别

【转载】AutoResetEvent与ManualResetEvent区别 ManualResetEvent 和 AutoResetEvent 从字面意思看,它们都表示是一个事件(Event)...

多线程之线程同步中的信号量AutoResetEvent和ManualResetEvent

本章概要: 1:终止状态和非终止状态 2:AutoResetEvent和ManualResetEvent的区别 3:WaitHandle.WaitOne()等  1:终止状态和非终止状态      首...
  • hxp42
  • hxp42
  • 2011-02-10 16:06
  • 287

AutoResetEvent和ManualResetEvent的實例分析

WaitOne(10000);//10秒為例1. AutoResetEvent 間隔的WaitOne 三次 后set一次 結果Set隨機匹配了第三個WaitOne ManualResetEven...

AutoResetEvent和ManualResetEvent详解

AutoResetEvent与ManualResetEvent详解

关于C#中AutoResetEvent和ManualResetEvent的一点学习心得

C#中的AutoResetEvent和ManualResetEvent用于实现线程同步。其基本工作原理是多个线程持有同一个XXXResetEvent,在这个XXXResetEvent未被set前,各线...

AutoResetEvent和ManualResetEvent 线程同步

在.Net多线程编程中,AutoResetEvent和ManualResetEvent这两个类经常用到, 他们的用法很类似,但也有区别。ManualResetEvent和AutoResetEvent都...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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