Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Отлов нескольких событий-MsgWaitForMultipleObjects


Автор: Neonoid 23.7.2009, 15:30
Здравствуйте, уважаемые. Итак, есть два приложения, между ними идёт обмен через события(которых три) - первое через PulseEvent() сигнализирует события, второе их должно получить. С одним событием и WaitForSingleObject() всё просто. Вот с тремя событиями пока ничего не выходит - при отлове через MsgWaitForMultipleObjects() с bWaitAll, установленным в False, срабатывает всегда только одно событие. В чем фишка - события эти могут(часто так и делают) срабатывать в один момент. То есть, возможно, пока я обрабатываю результат MsgWaitForMultipleObjects(), состояние второго события устанавливается в сигнальное(третье срабатывает очень редко), и потом эта функция его отловить не может. Так вот, подскажете, как организовать цикл для гарантированного приёма всех событий? Надеюсь на помощь.
ЗЫ Тут одна тонкость есть - принимающее приложение написано на пайтоне, поэтому код не привожу.

Автор: Riply 24.7.2009, 06:54
Цитата(Neonoid @  23.7.2009,  15:30 Найти цитируемый пост)
Так вот, подскажете, как организовать цикл для гарантированного приёма всех событий?


Довольно сумбурно. Проблема понятна только в общих чертах.
В общих чертах и выскажусь.
Во-первых, мне не нравится PulseEvent. Попробуй от него уйти. В MSDN предлагаются варианты.
Во-вторых, не понятна причина почему не отлавливается "третье событие".
Потому что одно из предыдущих в сигнальном состоянии ?
Если так, то может исключить их из ожидаемых ?
И вообще. Стандартных функций работающих с "упорядоченным пробуждением" я не знаю.
(термин не очень удачный, но другой подобрать не сумела) 
Это надо реализовывать вручную.

P.S.
 Если реализация ожидающего и обрабатывающего кода на вражеском языке,
 то преведи псевдо код этого алгоритма.
 Шансы, что тебе помогут повысятся в разы smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)