一、事件是常用的多线程同步互斥机制
函数原型如下。 共有四个参数。
HANDLE CreateEvent (
LP security _ attributeslpeventattributes,//SECURITY_ATTRIBUTES结构指针。 可以为空
BOOL bManualReset,//手动/自动
//TRUE :显示手动,必须在WaitForSingleObject之后手动调用ResetEvent清除信号
//FALSE :表示自动,WaitForSingleObject后,事件信号自动清除
BOOL bInitialState,//初始状态,FALSE为无信号,TRUE为有信号
LPCTSTR lpName //事件的名称
);
二、用一下演示吧。
1 .首先,在使用时间的类中声明此事件的句柄,并按如下方式标识事件:
2、声明句柄后,调用CreateEvent ) )函数创建事件,如下所示:
3、要设置信号的初始状态,请使用SetEvent () (活动状态)或ReSetEvent () ) ) )的非活动状态。 根据使用设定的不同,此处set如下所示。
4、函数正在检测事件的状态。 在循环中检测到事件的状态,如下所示: 如果未激活事件,则循环将在此处挂起,而不会向下执行。 除非在其他地方调用了SetEvent (或ResetEvent ) ),否则此处将在事件被激活后向下执行。
5、执行完成后,调用ResetEvent ()还原事件状态(如果在创建事件时手动设置)。