Re: cancel WaitForMultipleObjects
От: Ovl Россия  
Дата: 07.06.06 08:06
Оценка:
Здравствуйте, 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;
      } 
   }
}
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.