On Mon, May 14, 2007 at 02:20:52AM -0300, Pablo Statile wrote:
> El tema es que tanto yo, como el resto de la gente, estamos haciendo join()
> en nuestro desarrollo,
> esperando que al final de todo, se libere automaticamente la memoria ( ya
> que el texto dice" The
> target thread is automatically detached after all joined threads have been
> woken up.").
> Por lo que lei en internet, el problema esta en que valgrind te avisa que
> posiblemente este
> perdiendose memoria, pero no es asi, ya que luego, la memoria se esta
> liberando.
>
> Por lo que vi, no hay una funcion directa que libere la memoria, y se pueda
> usar conjuntamente con
> el join().
No se muy bien a que te referis aca, si es a lo que tira el valgrind que
mandaste en el otro mail u a otra cosa.
Una forma normal de terminar un thread es que desde dentro del thread se
llame a pthread_exit(), o la funcion principal del thread haga un
return. Eso libera los recursos internos asociados con el thread.
Despues en algun momento el thread principal hace un pthread_join()
sobre el que murio, y por ultimo haces un free() de tu pthread_t.
O sea, el ciclo de vida seria algo asi:
Thread principal Thread hijo
----------------------------------------------------------------
pthread_t pd = malloc();
pthread_create(pd, func);
... [ejecucion de func]
...
return o pthread_exit()
[el thread muere]
...
pthread_join(pd);
free(pd);
Me explico?
Gracias,
Alberto
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion