C#中多线程ManualResetEvent 与 AutoResetEvent 区别

上传:shyly36375 浏览: 23 推荐: 0 文件:pdf 大小:74.62 KB 上传时间:2021-08-04 11:31:52 版权申诉

在多线程开发中,时常用到ManualResetEvent 与AutoResetEvent 。它们如同道路交通中的信号灯。均继承EventWaitHandle 接口,因此,均具有以下功能:AutoResetEvent 收到 Set 后 , 一次只能执行一个线程,其它线程继续 WaitOne 。AutoResetEvent 将保持终止状态直到一个等待线程释放,并自动返回到非信号状态。因此通常WatiOne 之前,先 Reset() 一下,清除Set 信号需要注意的是:不能保证的每个调用Set方法将释放一个线程。就像第二次调用未发生。此外,如果Set时没有等待的线程调用和AutoResetEvent已终止,则调用不起作用。个人理解 ,这只是原理层面含义,实际使用过程中,有差别的,如下示例:实际执行结果 , 在 执行 set 后 reset 前 ,有多少个线程唤起执行,无法预料:需要加锁 ,确保一次通过一个线程:执行结果:

上传资源
用户评论