C产品在市场上有哪些独特优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计872个文字,预计阅读时间需要4分钟。
在多线程开发中,经常使用ManualResetEvent与AutoResetEvent。它们如同交通信号灯。那么,它们之间有什么区别呢?
共同点:都继承自EventWaitHandle接口,因此都具有以下功能:- Reset() // 红灯亮起
区别:- ManualResetEvent需要手动调用Set()来点亮绿灯,而AutoResetEvent在调用Reset()后,下次调用WaitOne()时会自动点亮绿灯。
在多线程开发中,时常用到ManualResetEvent 与AutoResetEvent 。 它们如同道路交通中的信号灯。两者之间有什么区别呢?
共同点:
均继承EventWaitHandle 接口,因此,均具有以下功能:
Reset() //红灯
Set() //绿灯
WaitOne() // 等待信号
不同点:
AutoResetEvent 收到 Set 后 , 一次只能执行一个线程,其它线程继续 WaitOne 。
ManualResetEvent 收到 Set 后,所有处理 WaitOne 状态线程均继续执行。
msdn 提到(如果没有线程 处于WaitOne() 状态,而调用 Set ,AutoResetEvent将保持Set 状态):
调用Set信号AutoResetEvent释放等待线程。 AutoResetEvent 将保持终止状态直到一个等待线程释放,并自动返回到非信号状态。 如果没有线程处于等待状态,状态将无限期地保持已发出信号。
本文共计872个文字,预计阅读时间需要4分钟。
在多线程开发中,经常使用ManualResetEvent与AutoResetEvent。它们如同交通信号灯。那么,它们之间有什么区别呢?
共同点:都继承自EventWaitHandle接口,因此都具有以下功能:- Reset() // 红灯亮起
区别:- ManualResetEvent需要手动调用Set()来点亮绿灯,而AutoResetEvent在调用Reset()后,下次调用WaitOne()时会自动点亮绿灯。
在多线程开发中,时常用到ManualResetEvent 与AutoResetEvent 。 它们如同道路交通中的信号灯。两者之间有什么区别呢?
共同点:
均继承EventWaitHandle 接口,因此,均具有以下功能:
Reset() //红灯
Set() //绿灯
WaitOne() // 等待信号
不同点:
AutoResetEvent 收到 Set 后 , 一次只能执行一个线程,其它线程继续 WaitOne 。
ManualResetEvent 收到 Set 后,所有处理 WaitOne 状态线程均继续执行。
msdn 提到(如果没有线程 处于WaitOne() 状态,而调用 Set ,AutoResetEvent将保持Set 状态):
调用Set信号AutoResetEvent释放等待线程。 AutoResetEvent 将保持终止状态直到一个等待线程释放,并自动返回到非信号状态。 如果没有线程处于等待状态,状态将无限期地保持已发出信号。

