关于AutoResetEvent和ManunalResetEvent使用

本文介绍了C#中的AutoResetEvent和ManualResetEvent,重点讲解了它们的初始化参数、set()和reset()操作,以及在多线程环境下WaitOne()方法的不同行为。AutoResetEvent仅允许一个线程接收信号,而ManualResetEvent则允许多个线程接收信号,直到手动reset。
摘要由CSDN通过智能技术生成

 

【C#基础】轻松理解AutoResetEvent 和 ManualResetEvent-CSDN博客

初始化实例参数:true表示有信号线程可以断续,false表示无信号线程需等待

set():设置为有信号状态true

reset():设置为无信号状态false

AutoResetEvent和ManunalResetEvent区别在于WaitOne()

AutoResetEvent在WaitOne()收到信号执行后自动调用reset()转换为无信号状态false

ManunalResetEvent在WaitOne()收到信号执行后状态不改变,一直会有信号,直到手动调用reset()转换为无信号状态false

意味着多线程状态下,给一次信号AutoResetEvent的WaitOne()只有一个线程能收到信号,而ManunalResetEvent的所有线程都能收到信号。

状态值只有一个,在同一点调用1次set()跟调用10次set()效果一样,比如:AutoResetEvent先调用10次set(),后续AutoResetEvent调用1次WaitOne()信号就没有了,变成false。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzl_li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值