将2 WaitForSingleObject 置于'if'条件中是否有效?我知道它可以使用 WaitForMuiltipleObject 重写。但我想知道我是否使用下面的代码会导致任何问题..?
CHandle m_hEventUDP;
CHandle m_hEventTCP;
if (WaitForSingleObject(m_hEventUDP, 1500) == WAIT_OBJECT_0 || WaitForSingleObject(m_hEventTCP, 1500) == WAIT_OBJECT_0)
{
//An event is triggered(among 2)
//I don't care which event is triggered among 2, either of one is Okay for me
}
else
{
//No event is triggered
}
答案 0 :(得分:2)
那将等待第一个,如果没有发生(并且超时),那么它将等待第二个。您可以选择以下三种情况之一:
使用WaitForMultipleObjects,您将得到以下行为:
因此,在您当前的代码中,您会在常见情况下添加1.5秒延迟,多个对象等待避免。
答案 1 :(得分:0)
这不会按你想要的方式工作(至少没有任何非常接近WaitForMultipleObjects
会做的事情,无论如何)。 ||
生成一个序列点,因此它评估左侧,然后当且仅当它产生错误结果时,它评估右侧。