[eside-ghost] Pthreads

Jon Ander Ortiz jonbaine en gmail.com
Mar Sep 15 18:33:00 CEST 2009


perdón, que me ha derrapado el tabulador:

//////////////////////////////////////////////////////////////////////////////////////
   pthread_t t;
   pthread_attr_t attr;

if (pthread_attr_init(&attr)
    ||
   pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)
    ||
   pthread_create (&t, &attr,handleNewConnection, (void *) connData)) {
//ERROR
}

//////////////////////////////////////////////////

2009/9/15, Jon Ander Ortiz <jonbaine en gmail.com>:
>   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