等待多个对象

【勇芳软件工作室】汉化HomePreviousNext

以下示例使用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);

}