关于AutoResetEvent和ManualResetEvent的一点想法

AutoResetEvent和ManualResetEvent主要用于线程间的通信,就是在一个线程的合适执行位置通知另一个线程(此时已经是阻塞状态)可以不在阻塞继续往下执行了。

首先从名字上来说这两个类的最大区别有两个地方,一个是在Reset(复位)的方式上,一个是自动,一个是手动(当然是废话

第二个地方:如果是自动置位(复位)事件,当有多个线程同时等待它的set事件,此时获得非阻塞权限的线程是不定的,也就是说此时AutoResetEvent只能 随机给其中一个发送信号。

下面就需要理解它们的几个主要方法

WaitOne 方法:阻塞当前线程,同时等待线程的set信号

set方法: 将事件设置为true状态(假使开始是阻塞状态即为flase状态初始化),等待线程可以继续执行;

reset方法:AutoResetEvent 在set后自动恢复为reset状态(flase情况),ManualResetEvent可以在合适的位置调用reset重新将控制线程阻塞();

猜你喜欢

转载自blog.csdn.net/mufeng008/article/details/80102046
今日推荐