首页 > 其他 > 详细

事件Event

时间:2020-04-19 00:47:29      阅读:60      评论:0      收藏:0      [点我收藏+]

事件是WIN32提供的最灵活的线程间同步方式,根据状态变迁方式不同,可分为手动设置和自动恢复两类

手动设置:这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置

自动恢复:一旦事件发生并被处理后,自动恢复到没有事件的状态,不需要再次设置。

 

相关API函数:

 

CreateEvent//创建事件对象
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,// 安全属性,确定返回的句柄是否可被子进程继承,设置为NULL则此句柄不能被继承
BOOL bManualReset,// 复位方式,指定将事件对象创建成手动复原还是自动复原,如果是TRUE,
//那么必须用ResetEvent函数来手工将事件的状态复原到无信号状态。如果设置为FALSE,当一个线程
//等待到事件信号后系统会自动将事件状态复原为无信号状态。
BOOL bInitialState,// 初始状态,指定事件对象的初始状态。如果为TRUE,初始状态为有信号状态;否则为无信号状态。 LPCTSTR lpName // 对象名称,指定事件的对象的名称,是一个以0结束的字符串指针,NULL表示匿名事件 );

成功返回事件对象句柄,如果创建已有事件对象,那么返回已经存在的事件句柄,GetLastError也会设置为ERROR_ALREADY_EXISTS,失败返回NULL

 

SetEvent()把指定事件对象的状态设置为有信号状态

BOOL SetEvent(HANDLE hEvent);//hEvent表示事件句柄

成功返回TRUE

 

ResetEvent();把指定的事件对象设置为无信号状态

BOOL ResetEvent(HANDLE hEvent);//hEvent表示事件句柄

成功返回TRUE

 

事件可以用来实现进程只有一个实例

 

事件Event

原文:https://www.cnblogs.com/liu6666/p/12727786.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!