以下示例使用CreateEvent函数创建两个事件对象。然后使用WaitForMultipleObjects函数等待其中一个对象的状态设置为发出信号。
HANDLE hEvents[2];
DWORD i, dwEvent;
//创建两个事件对象。
for (i = 0; i < 2; i++)
{
hEvents[i] = CreateEvent(
NULL, //没有安全属性
FALSE, //自动重置事件对象
FALSE, //初始状态是非信号的
NULL); //未命名的对象
if (hEvents[i] == NULL) {
printf("CreateEvent error: %d\n", GetLastError() );
ExitProcess(0);
}
}
//创建线程等待其他线程或进程
//来表示事件对象。
dwEvent = WaitForMultipleObjects(
2, //数组中的对象数
hEvents, //对象数组
FALSE, //等待任何
INFINITE); //无限期等待
//返回值表示哪个事件发出信号。
switch(dwEvent){
// hEvent [0]发出信号。
case WAIT_OBJECT_0 + 0:
//执行此事件所需的任务。
break;
// hEvent [1]发出信号。
case WAIT_OBJECT_0 + 1:
//执行此事件所需的任务。
break;
//返回值无效。
默认:
printf("Wait error: %d\n", GetLastError());
ExitProcess(0);
}