Это правильный способ поставить 2 WaitForSingleObject в условии «если». и я знаю, что это может быть переписано с помощью 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
}
Это будет ждать первого, и если это не произойдет (и закончится) только тогда, то это будет ждать второго. Вы можете иметь одну из трех ситуаций:
С WaitForMultipleObjects вы получите следующее поведение:
Таким образом, в вашем текущем коде у вас будет добавлена 1,5-секундная задержка в обычных случаях, которых избегают ожидания нескольких объектов.
Это не будет работать так, как вы хотите (по крайней мере, не очень близко к тому, что WaitForMultipleObjects
будет делать, в любом случае). ||
создает точку последовательности, поэтому он оценивает левую сторону, тогда, если и только если это дает ложный результат, он оценивает правую сторону.