Если _endthreadex вызывается автоматически, почему он помогает обеспечить «правильное восстановление ресурсов»?Не должно иметь никакого значения, назову ли я это или нет, или нет?
Я думаю, они имели в виду это в тех случаях, когда вы не используете стандартный способ завершения потока.
Если _endthreadex не закрывает дескриптор, почему я не должен закрывать его с помощью CloseHandle?
Вы должны закрыть его с помощью CloseHandle
при использовании _endthreadex
.В документации сказано, что только _endthread
закрывает дескриптор (и, следовательно, вызов CloseHandle
является излишним).
Все мои потоки только добровольно прекращают работу, возвращаясь из своей основной функции, и никогда не завершаются принудительно,Согласно документации, когда это происходит, _endthreadex вызывается автоматически.
Закрытие дескрипторов потока из потока, который запустил это широко распространенное решение.Вы должны запомнить дескриптор и в соответствующем месте дождаться окончания потока (используя WaitForSingleObject
), а затем закрыть его.Если вы этого не сделаете, вы вызовете утечку ресурсов.Обычно это не большая проблема, если у вас есть несколько потоков, но это определенно не очень хорошая практика.