WaitForSingleObject与waitForMultipleObjects

来源:互联网 发布:hql获取第一条数据 编辑:程序博客网 时间:2024/05/14 19:34

这两个函数都是等待函数,等待函数可以使进程主动进入等待状态,直到某个内核对象变成已通知状态或者超时。

WaitForSingleObject的函数原型是:

DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMillisecond)
hObject 是一个可以被通知的内核对象,以句柄的形式传递,dwMillisecond是超时的时间。这个函数的返回值有三种形式:

WAIT_OBJECT_0:当在超时之前hObject被通知了就返回这个。继续进行用户进程的逻辑。

WAIT_TIMEOUT:超时了。

WAIT_FAILED:对这个函数的调用失败了,可能是传递了无效的hObject。

有了等待单个对象被通知,那按理说就该支持多个对象被通知,它的函数原型是:

DWORD WaitForMultipleObjects(DWORD dwCount, const HANDLE* hObjects, bool fWaitAll, DWORD dwMillisecond)
我想应该能猜出这些参数的意义了。

dwCount:需要被通知对象数组的大小。

hObjects:需要被通知对象的数组,好理解。

fWaitAll:很有意思的一个参数,当他为true时,表示hOjects里面的每个对象都被通知到了,才结束,否则,只要有一个被通知到就可以了。

dwMillisecond:你懂得,不说了。

返回值也比较有意思,主要是因为fWaitAll这个参数造成的,当它为false时,函数返回的WAIT_OBJECT_0+被通知那个对象的偏移!


0 0
原创粉丝点击