Windows CreateEvent函数在多线程中使用及实例

HANDLE CreateEvent(
	LPSECURITY_ATTRIBUTES lpEventAttributes,
	BOOL bManualReset, 
	BOOL bInitialState,
	LPCSTR lpName
);

lpEventAttributes:指向SECURITY_ATTRIBUTES结构体,此结构体决定函数的返回句柄是否可以让子进程继承。如果这个参数为NULL,这个句柄是不能继承的。一般情况下,这个参数设置为NULL。

bManualReset:创建一个手动重置事件(TRUE),还是创建一个自动重置事件(FALSE)。

手动置位事件相当于教室门,教室门一旦打开(被触发),所以有人都可以进入直到老师去关上教室门(事件变成未触发)。

自动置位事件就相当于医院里拍X光的房间门,门打开后只能进入一个人,这个人进去后会将门关上,其它人不能进入除非门重新被打开(事件重新被触发),即重新使用SetEvent()。

人工重置方式的时候,一旦内核对象得到通知,所有等待该内核对象的线程都变为可调度线程,等待CPU分配时间,如果程序没有主动将该内核置为未通知状态,则内核对象将一直处于通知状态,所有等待该内核对象的线程也将一直处于可调度状态。若要将该内核对象置为未通知状态,需要程序主动去做这件事,即主动将内核对象置为未通知状态。;

自动重置方式的时候,一旦内核对象变为通知状态,则所有等待该内核对象的线程只有一个线程变为可调度线程,等待CPU分配执行时间,然后该内核对象有马上自动重置成未通知状态。WaitForSingleObject()返回。

bInitialStat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值