1.事件函数之CreatEvent() :
函数格式:
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes, // SD
BOOL bManualReset, // reset type
BOOL bInitialState, // initial state
LPCTSTR lpName // object name
);
参数说明:
- IpEventAttributes :指向一个结构体,该结构体决定该句柄是否被子进程继承。
- bManualReset: true 表示信号来了需要手动复位,否则一直表示有信号。False 表示一个等待该信号的线程释放就会变为无信号。
- bIntialstate:表示初始为有信号或者无信号
- IpName: 表示事件的名称。
使用方法:
参考网址:CreatEvent 函数参考
2.WaitForSingleObject() 函数介绍:
函数格式:
DWORD WaitForSingleObject(
HANDLE hObject, //指明一个内核对象的句柄
DWORD dwMilliseconds); //等待时间
函数作用:
- 使用该函数等待某个内核对象变为已通知状态。
函数返回值说明:
返回值类型 | 相关说明 |
---|---|
WAIT_OBJECT_0 | 内核对象在已通知状态 |
WAIT_TIMEOUT | 等待时间超时 |
WAIT_FAILED | 函数调用失败,比如参数不对 |
函数特点:
- 如果该内核对象处于未通知状态,则该函数会导致线程处于阻塞状态。
- 如果内核对应已处于通知状态,则函数立即返回WAIT_OBJECT_0
参考网址:https://blog.youkuaiyun.com/weixin_39345003/article/details/90899556
3. WaitForMultipleObjects() 函数介绍:
函数格式:
DWORD WaitForMultipleObjects(
DWORD dwCount, //等待的内核对象个数
CONST HANDLE* phObjects, //一个存放被等待的内核对象句柄的数组
BOOL bWaitAll, //是否等到所有内核对象为已通知状态后才返回
DWORD dwMilliseconds); //等待时间
- dwCount 为0到MAXIMUM_WAIT_OBJECTS(64)中的一个值
函数作用:
函数返回值:
- WAIT_OBJECT_0 表示成功; WAIT_OBJECT_0 + 0 表示h[0] 进程结束,WAIT_OBJECT_0 + 1 表示h[1]进程结束。
- WAIT_FAILED:返回失败
- WAIT_TIMEOUT:表示超时