Закрытие дескриптора потока перед выходом из связанного потока - PullRequest
1 голос
/ 15 июля 2011

Это то, что я пытаюсь сделать в своем коде: я создаю событие, создаю поток.Если в главном потоке происходит сбой, я устанавливаю событие, чтобы указать связанному потоку о сбое, и даю указание ему корректно выйти из связанного потока.

Мой вопрос: безопасно ли закрывать дескриптор потокапосле того, как событие установлено, в то время как связанный поток все еще работает (пытается очистить и выйти)?Попытка немедленно закрыть дескриптор потока и не ожидать возврата связанного потока, состоит в том, чтобы не останавливать других, ожидающих в основном потоке, пока не вернется связанный поток.

Пожалуйста, предложите.Спасибо.

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

Да, это безопасно.Из документации CreateThread :

Объект потока остается в системе до тех пор, пока поток не завершится и все его дескрипторы не будут закрыты посредством вызова CloseHandle.

Конечно, если вы закроете дескриптор потока, вы больше не сможете ждать его с помощью вызова WaitForSingleObject / WaitForMultipleObjects.

0 голосов
/ 15 июля 2011

Закрывать дескриптор потока даже внутри вашей функции Thread не грех, но дело в том, что вы не сможете использовать этот дескриптор потока для какого-либо взаимодействия. Другой вариант - Где бы вы ни сообщали о событии, используйте waitforsingleobject и wait в дескрипторе потока. Как только он вернется, вы можете закрыть ручку.

...