#windows #events #signals
#Windows #Мероприятия #сигналы
Вопрос:
Особенно в Windows, верно ли, что поток завершится, если событие сигнализируется. Что это значит, когда сигнализируется событие?
Комментарии:
1. Возможно, вы путаете сигнализацию объекта события Windows с сигналом POSIX? Это совершенно разные вещи. Объект события — это объект синхронизации между потоками, что-то похожее на семафор, который вы можете получить и освободить («signal») таким же образом. Нет причин, по которым поток должен завершаться из-за этого.
2. @Damon, Завершатся ли вспомогательные потоки, если основной поток завершится?
3. Я собираюсь ответить «НЕТ», хотя правильным ответом было бы «ДА». Не полагайтесь на то, что это произойдет. Сделайте так, чтобы другие потоки завершались контролируемым, определенным образом. Подайте сигнал потокам и попросите их вернуться, не прерывайте их, дождитесь завершения работы ваших потоков и очистите выделенную вами память. Хотя обычно в этом нет необходимости, сделайте это в любом случае. Если у вас есть привычка делать все лениво, рано или поздно вы окажетесь в кошмаре отладки, как только столкнетесь с ситуацией, когда предположение «это работает в любом случае» не выполняется.
Ответ №1:
Прежде всего, вы должны понимать, что такое событие. Любое выполнение пользовательского интерфейса или программного действия может быть вызвано как событие. Например, при нажатии кнопки мыши или клавиши клавиатуры и т.д.
Теперь сигнализируется событие означает возникновение такого события.
Комментарии:
1. Хотя технически это верно, OP говорит о примитиве синхронизации, называемом «events» в Windows API , а не о программировании, управляемом событиями.