Здравствуйте, MTatarnikov, Вы писали:
MT>Добрый день.
MT>Не подскажете, как отменить WaitForMultipleObjects?
MT>Имеем кучу объектов, и WiatForMultipleObjects вызвана с параметром bWaitAll = TRUE. Но в какой-то момент надо завершить ожидание по другому событию.
MT>Т.е. WaitForMultipleObjects реализует схему (O1 | O2 | ... | On) при bWaitAll = FALSE и (O1 & O2 & ... & On) при bWaitAll = TRUE. А мне хочется что-то типа (O1 & O2 & ... & On) | Om. Кроме как играться со временем ожидания или переводить всё на bWaitAll = TRUE ничего на ум не приходит.
MT>Спасибо.
MT>Миша.
а если попробовать (O1 | O2 | ... | On | Om), и по событию выставлять флаги, после чего запускать процедуру, когда либо Om произошло, либо все флаги для O1..On выставлены
bool flags[n];
while(true) {
ret = WaitForMultipleObjects(O1 | O2 | ... | On | Om);
if (ret == Om) {
doWork();
break;
} else if (ret == TIMEOUT) {
break;
} else {
flags[ret] = true;
if (flags.isAllSet()) {
doWork();
break;
}
}
}