реклама на сайте
подробности

 
 
> TEventFlag, Не пойму идеологии :(
gladov
сообщение Nov 11 2010, 09:03
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



Объясните плз, почему TEventFlag.Wait() работает по-разному (очищает флаг или нет) в зависимости от того взведен флаг на момент запроса или нет? Я для себя никаких плюсов этого не вижу, а сумятицу в голову (в мою конкретно) вносит. Насколько понял, это сделано для множественной побудки, т.е. если в ожидании уснули вдвоем, то оба и проснутся. Но кто же должен тогда очистить флаг? Оба сразу? А если один из проснувшихся (первый) хочет инициировать новую операцию с новым ожиданием флага, а второй потом проснется и без разбора очистит флаг?

Вообще идея понятна но смущает то, что выйдя из wait() я не знаю, очищен ли уже флаг или нет. А проверять последующим вызовом IsSignaled() уже нельзя, т.к. ее результат может оказаться невалидным, т.к. между wait() и IsSignaled() может что-то произойти, а в критическую секцию их заключить нельзя т.к. возможно ожидание флага от прерывания. Вот и не срастается у меня в голове идеология - как же правильно по задумке автора(ов) работать с флагами?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01338 секунд с 7
ELECTRONIX ©2004-2016