您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。
- 内容介绍
- 文章标签
- 相关推荐
本文共计893个文字,预计阅读时间需要4分钟。
在多线程开发中,常用到ManualResetEvent与AutoResetEvent,它们类似交通信号灯。两者有何区别呢?
共同点:均继承自EventWaitHandle接口,因此具有以下功能:Reset() //红灯
区别:
ManualResetEvent:需要手动调用Reset()方法来重置信号灯(红灯变绿灯)。
AutoResetEvent:当等待线程释放时,信号灯会自动重置(红灯变绿灯)。
在多线程开发中,时常用到ManualResetEvent 与AutoResetEvent 。 它们如同道路交通中的信号灯。两者之间有什么区别呢?
共同点:
均继承EventWaitHandle 接口,因此,均具有以下功能:
Reset() //红灯
Set() //绿灯
WaitOne() // 等待信号
不同点:
AutoResetEvent 收到 Set 后 , 一次只能执行一个线程,其它线程继续 WaitOne 。
ManualResetEvent 收到 Set 后,所有处理 WaitOne 状态线程均继续执行。
msdn 提到(如果没有线程 处于WaitOne() 状态,而调用 Set ,AutoResetEvent将保持Set 状态):
调用Set信号AutoResetEvent释放等待线程。 AutoResetEvent 将保持终止状态直到一个等待线程释放,并自动返回到非信号状态。
本文共计893个文字,预计阅读时间需要4分钟。
在多线程开发中,常用到ManualResetEvent与AutoResetEvent,它们类似交通信号灯。两者有何区别呢?
共同点:均继承自EventWaitHandle接口,因此具有以下功能:Reset() //红灯
区别:
ManualResetEvent:需要手动调用Reset()方法来重置信号灯(红灯变绿灯)。
AutoResetEvent:当等待线程释放时,信号灯会自动重置(红灯变绿灯)。
在多线程开发中,时常用到ManualResetEvent 与AutoResetEvent 。 它们如同道路交通中的信号灯。两者之间有什么区别呢?
共同点:
均继承EventWaitHandle 接口,因此,均具有以下功能:
Reset() //红灯
Set() //绿灯
WaitOne() // 等待信号
不同点:
AutoResetEvent 收到 Set 后 , 一次只能执行一个线程,其它线程继续 WaitOne 。
ManualResetEvent 收到 Set 后,所有处理 WaitOne 状态线程均继续执行。
msdn 提到(如果没有线程 处于WaitOne() 状态,而调用 Set ,AutoResetEvent将保持Set 状态):
调用Set信号AutoResetEvent释放等待线程。 AutoResetEvent 将保持终止状态直到一个等待线程释放,并自动返回到非信号状态。

