当bWaitAll为TRUE时,WaitForMultipleObjects返回值
WaitForMultipleObjects return value when bWaitAll is TRUE
由于有些人对文档有不同的解释,因此我试图在
时一次性澄清WaitForMultipleObjects的返回值-
bWaitAll = TRUE
. - 所有句柄都有信号
基于文档:
WAIT_OBJECT_0 to (WAIT_OBJECT_0 + nCount - 1)
如果bWaitAll为TRUE,则返回值表明所有指定对象的状态都有信号。
假设我已经传递了5个句柄给这个函数,并且所有的都被标记了,返回值是WAIT_OBJECT_0
吗?
注意
我试图通过程序验证WaitForMultipleObjects
成功。
DWORD dwWaitForMultipleObjectsRes = WaitForMultipleObjects(dwOpenProcessCount, handles, TRUE, m_dwWaitTimeForProcToBeKilled);
if (dwWaitForMultipleObjectsRes != WAIT_OBJECT_0)
// failed?
我想验证条件的正确性
文档非常清楚,如果等待满足,将返回从WAIT_OBJECT_0到WAIT_OBJECT_0 + nCount - 1的返回代码:
如果bWaitAll为TRUE,返回值表示所有的状态指定的对象发出信号。
它没有指定确切的值,所以没有人能确定它将是什么,除了在范围内。
所以不测试if (dwWaitForMultipleObjectsRes == WAIT_OBJECT_0)
,你应该测试:
if ((dwWaitForMultipleObjectsRes >= WAIT_OBJECT_0)
&& (dwWaitForMultipleObjectsRes < (WAIT_OBJECT_0 + dwOpenProcessCount)))
{
// wait satisfied, all objects signalled
}
相关文章:
- 没有找到相关文章