事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件可分为两类: (1)手动设置:这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置。 (2)自动恢复:一旦事件发生并被处理后,自动恢复到没有事件状态,不需要再次设置。
windows事件主要使用到 CreateEvent 和 SetEvent 这两个方法。
一 CreateEvent声明如下
HANDLE
WINAPI
CreateEventW(
_In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes,
_In_ BOOL bManualReset,
_In_ BOOL bInitialState,
_In_opt_ LPCWSTR lpName
);
参数说明
参数1:安全属性,一般设为NULL
参数2:如果是FALSE,设置信号复位方式为自动恢复为无信号状态;如果是TRUE,手动恢复为无信号状态。
参数3:设为TRUE,自动重置信号状态, 初始化为有信号状态,线程可以直接获取;设为FALSE,初始为无信号状态
参数4:信号名称,