2009-01-07 14 views
11

Me gustaría simplemente crear un hilo, luego llamar a CloseHandle inmediatamente y dejar que el hilo muera solo para que no tenga que hacer un trabajo de limpieza adicional en el hilo 'original' (no es que la limpieza sea difícil en sí mismo, pero significa una buena cantidad de contabilidad adicional que me gustaría evitar).¿Es razonable llamar a CloseHandle() en un hilo antes de que finalice?

MSDN dice que al llamar a CloseHandle() en un hilo no finaliza el hilo, pero no está claro si eso significa que realmente puedo hacer esto o no.

Respuesta

20

No solo es razonable, no hacerlo es una pérdida de control. En general, lo cierro inmediatamente después de crear el hilo a menos que lo necesite en otro lugar.

+0

+1, de esta manera no obtendrá los falsos positivos cuando use AppVerifier. –

+1

¿Eso significa que 'ExitThread()' (llamado explícita o implícitamente) cierra el identificador del subproceso que sale, por lo que solo el subproceso que crea el subproceso todavía tiene que cerrar el identificador (es decir 'CreateThread()' crear un conteo de identificadores de 2)? – Jori

11

CreateThread función hacer recuento de referencia +2, CloseHandle solo hace referencia recuento -1, cuando la función de subproceso finaliza, el sistema hará referencia recuento -1.

Cuestiones relacionadas