创建事件 CreateEvent
头文件:#include “windows.h”
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构指针,可为NULL
BOOL bManualReset, // 是否手动重置信号
// TRUE:手动,在WaitForSingleObject后必须手动调用ResetEvent清除信号
// FALSE:自动,在WaitForSingleObject后,系统自动清除事件信号
BOOL bInitialState, //初始状态,FALSE为无信号,TRUE为有信号
LPCTSTR lpName //事件的名称
);
检测事件信号状态 WaitForSingleObject
DWORD WaitForSingleObject(
HANDLE hHandle, //事件句柄
DWORD dwMilliseconds //此次检测等待时间,单位:毫秒,0为立即返回,INFINITE为无限等待
);
返回值:
WAIT_ABANDONED 0x00000080:当hHandle为mutex时,如果拥有mutex的线程在结束时没有释放核心对象会引发此返回值;
WAIT_OBJECT_0 0x00000000 :核心对象已被激活;
WAIT_TIMEOUT 0x00000102:等待超时;
WAIT_FAILED 0xFFFFFFFF :出现错误,可通过GetLastError得到错误代码;
WaitForSingleObject除了可以等待通过CreateEvent创建的普通事件,也可以等待通过CreateWaitableTimer创建的定时器事件,以及其他类型的事件。
激活事件 SetEvent
BOOL SetEvent(
HANDLE hEvent //事件句柄
);
释放事件 ResetEvent
BOOL ResetEvent(
HANDLE hEvent //事件句柄
);