[eside-ghost] Pthreads
Jon Ander Ortiz
jonbaine en gmail.com
Mar Sep 15 18:31:25 CEST 2009
if (pthread_attr_init(&attr)
||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)
210 ||
211 pthread_create (&t, &attr,
handleNewConnection, (void *) connData)) {
2009/9/15, Jon Valdés <juanval en gmail.com>:
> si no recuerdo mal, era en la función de creación del thread, que en
> los parámetros le puedes especificar que lo quieres detached.
>
> Lo que pasa es que tampoco recuerdo mucho del asunto. Casi que mejor
> tira de valgrind como decía Jonan, y a ver si encuentras el leak :-\
>
> Hasta luegoo
>
> 2009/9/15 Iker Perez de Albeniz - Txupete - <txupete en gmail.com>:
>>
>>
>> 2009/9/15 Jon Valdés <juanval en gmail.com>
>>>
>>> Si no recuerdo mal, los threads se pueden crear en modo detached, que
>>> hace que no haga falta hacer el join al final, y el thread se destruye
>>> automáticamente.
>>
>> eso he estado intentando... con un atributo.. como se podria hacer de otra
>> forma ??
>>
>> pthread_create(......);
>> pthread_detached(pthread_id);
>>
>>
>> ¿asi?
>>
>>>
>>> Y lo que dice jonan: la variable data mas vale que la borres desde
>>> dentro de la rutina del thread, porque si no ahi tienes un buen leak.
>>>
>>
>> si, al final del threar la borro. ese no es el problema.
>>
>>>
>>> Un saludoooo
>>>
>>> 2009/9/15 Iker Perez de Albeniz - Txupete - <txupete en gmail.com>:
>>> > He probado con pthread_join() y que espere q ue se termine el thread y
>>> > parece que el leak desaparece... pero al final es como si tubiera un
>>> > solo
>>> > thread...
>>> >
>>> > 2009/9/15 Jon Ander Ortiz <jonbaine en gmail.com>
>>> >>
>>> >> Buenas Iker!!
>>> >>
>>> >> Ante todo, comentar que los threads son una buena manera de dispararse
>>> >> a
>>> >> un pie [1,2] :D
>>> >>
>>> >> Sobre el error de pthread_detach, el lugar donde deberías llamarla
>>> >> (una
>>> >> sola vez), debería de ser
>>> >> tras el pthread_create. ¿Como la estás llamanado para que te pete?
>>> >>
>>> >> Sobre el crecimiento de la memoria:
>>> >>
>>> >> * LO PRIMERO DE TODO: No destruyes "data". A primera vista tienes un
>>> >> leak.
>>> >> En un for infinito.
>>> >> Pasale el valgrind que te va pegar un chillido de los buenos en cada
>>> >> bucle
>>> >> si tienes un leak ahí.
>>> >>
>>> >> * Cuando la función llamada en pthread_create, termina, se produce un
>>> >> pthread_exit implícito, y
>>> >> la memoria asociada a dicho thread (stack y las variables TLS [3] ) se
>>> >> liberan. Si estás llamando explicitamente
>>> >> a esta función desde algún destructor, o alguna cosa rara puede ser el
>>> >> origen de tus problemas.
>>> >>
>>> >> Un saludete:
>>> >> Jonan
>>> >>
>>> >>
>>> >> [1]http://badtux.org/home/eric/editorial/threads.php
>>> >> [2]http://www.kuro5hin.org/story/2002/11/18/22112/860
>>> >> [3]http://en.wikipedia.org/wiki/Thread-local_storage
>>> >>>
>>> >>> _______________________________________________
>>> >>> eside-ghost mailing list
>>> >>> eside-ghost en listas.deusto.es
>>> >>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> eside-ghost mailing list
>>> >> eside-ghost en listas.deusto.es
>>> >> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>> >
>>> >
>>> > _______________________________________________
>>> > eside-ghost mailing list
>>> > eside-ghost en listas.deusto.es
>>> > https://listas.deusto.es/mailman/listinfo/eside-ghost
>>> >
>>> _______________________________________________
>>> eside-ghost mailing list
>>> eside-ghost en listas.deusto.es
>>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>>
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en listas.deusto.es
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
Más información sobre la lista de distribución eside-ghost