2009-06-30 9 views
6

De pthread_join página del manual():¿Tengo que pthread_incluir cada hilo que creo?

When a joinable thread terminates, its memory resources (thread descriptor and stack) are not deallocated until thread performs pthread_join on it. Therefore, pthread_join must be called once for each joinable thread created to avoid memory leaks.

¿Quiere decir que necesito para unirse a cada hilo se crea para evitar fugas? Pero unirse bloquea a la persona que llama.

Por favor, explíquelo.

Respuesta

8

No necesita necesita para unirse a un hilo, pero es una buena idea. Sin llamar a pthread_join(), existe la posibilidad de que la función main() regrese antes de que termine el hilo. En este caso, pthread_join() hace que la aplicación espere hasta que el otro hilo termine de procesarse. Además, cuando se une al hilo, le da la oportunidad de verificar los valores devueltos y asegurarse de que todo transcurra sin problemas, y le da la oportunidad de limpiar los recursos que haya compartido con el hilo.

EDITAR: Una función que puede ser de su interés es pthread_detach(). pthread_detach() permite que el almacenamiento de la cadena se limpie después de que termine la cadena, por lo que no es necesario que se una a la cadena posteriormente.

+2

También puede crear el subproceso con el atributo PTHREAD_CREATE_DETACHED utilizando pthread_attr_setdetachstate – Hasturkun

+0

. Pensé que existía tal parámetro, pero no podía recordar cómo se llamaba. ¡Gracias por refrescar mi memoria! –

Cuestiones relacionadas