События выхода из потока - C ++ - PullRequest
1 голос
/ 13 января 2011

При использовании события (созданного с помощью ::CreateEvent(...)) для подачи сигнала на выход необходимо ли сбрасывать это событие (::ResetEvent(...)) до выхода из потока или закрытия дескриптора события (::CloseHandle(...))? Или это хорошая практика, если есть вероятность, что поток будет перезапущен? Это для среды Windows. Спасибо.

Ответы [ 3 ]

3 голосов
/ 13 января 2011

Нет необходимости вызывать событие сброса, поскольку при закрытии дескриптора связанное с ним событие больше не будет действительным.

2 голосов
/ 13 января 2011

Это зависит от семантики используемого вами события.

Если вы используете событие, чтобы запустить более одного потока, то вам не следует сбрасывать событие в каждом потоке. Если вы используете его для запуска только одного потока, то это снова зависит от дальнейшей семантики. Если событие используется для сигнализации других вещей другим потокам, то вам необходимо сбросить событие в исходящем потоке. В противном случае, если событие используется только для сигнализации о смерти одного потока, и ничего больше, вы можете сбросить событие или нет. Ничто иное не проснется в результате события, о котором было сообщено.

Вам не нужно сбрасывать событие, чтобы предотвратить утечку ресурсов. Все, что вам нужно сделать, это CloseHandle()

0 голосов
/ 13 января 2011

Нет необходимости переворачивать установленное состояние события перед закрытием его дескриптора. Чтобы дополнительно объяснить, установленное состояние события не связано с его существованием. Как вы, вероятно, знаете, функция CreateEvent (...) позволяет вам установить начальное состояние события. Так что, если вы инициализируете его как установленный, должны ли вы быть уверены, что он установлен перед CloseHandle ()? Нет, конечно, нет, установленное состояние совершенно несущественно. Это похоже на сброс членов класса в их начальное состояние до его разрушения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...