Технически это действительно. Вы можете закрыть этот дескриптор так же, как любой другой дескриптор - в любом потоке, который вам нравится.
Но закрывать дескриптор потока, как вы делали в вашем примере, не очень хорошая идея - это вообще бессмысленно и может быть небезопасно, потому что нет никакой правильной синхронизации при доступе к переменной s_hMyThread. Конечно, вы могли бы сделать правильную синхронизацию вашей переменной s_hMyThread
, но это был бы слишком сложный для поддержки код без реальной цели на самом деле. Нет смысла закрывать дескриптор потока из этого самого потока, потому что единственная причина держать дескриптор потока открытым - это ожидание где-нибудь завершения этого потока, что, естественно, подразумевает, что дескриптор должен оставаться открытым после завершения потока.
Обычно хорошей практикой является (1) если вам не нужно ждать завершения потока, затем вы закрываете его дескриптор на следующей строке после его создания (следующий вызов после CreateThread), (2) если вам нужно ждать завершения этого потока затем вы закрываете дескриптор потока, когда знаете, что объект потока сигнализируется (т.е. поток завершен). Я не вижу других применений, когда вам действительно нужна ручка потока.