windows等待函数

来源:互联网 发布:微观调查数据 编辑:程序博客网 时间:2024/06/13 21:42

等待函数使一个线程自愿进入等待状态,直到指定的内核对象被触发为止。

注意:如果线程在调用一个等待函数的时候,相应的内核对象已经处于触发状态,那么线程是不会进入等待状态。

函数:

DWORD WaitForSingleObject(//单内核对象的等待

HANDLE hObject,//等待的内核对象

DWORD dwMilliSeconds);//等待对象被触发的时间(单位:微秒)

dwMilliSeconds参数,如果被传入INFINITE(0xFFFFFFFF==-1),如果内核对象没有被触发,那么线程永远不会被唤醒

--会一直阻塞。

HANDLE hProcess = CreateProcess(......) ;

DWORD dw = WaitForSingleObject(hProcess,5000);

switch(dw)

{

case WAIT_OBJECT_0:

//The Process terminated;

break;

case WAIT_TIMEOUT:

//The Process did not terminate within 5000 milliseconds;

break;

case WAIT_FAILED:

//Bad call to function(invalid handle?);

break;

}

//等待多个句柄的函数 WaitForMultipleObject

DWORD WaitForMultipleObject(

DWORD dwCount ,

CONST HANDLE * phObjects,

BOOL bWaitAll,

DWORD dwMilliseconds);

dwCount表示希望函数检查内核对象的数量,这个值的范围1-MAXIMUM_WAIT_OBJECTS(64);phObjects是一个指针,指向一个内核对象的数组。

bWaitAll如果为TRUE,那么在所有内核对象被触发之前,函数将不会允许调用线程继续执行;如果为FALSE,则只要phObjects中有一个内核对象被触发

函数将会允许线程继续执行。

返回值的范围:WAIT_OBJECT_0------WAIT_OBJECT_0+dwCount-1,

如果将返回值-WAIT_OBJECT_0,那么就能得到内核对象数组中的被触发内核对象的索引值。

0 0
原创粉丝点击