pthreads + tsd
Aldrin Martoq
amartoq en dcc.uchile.cl
Mar Sep 1 15:38:57 CLT 2009
On Tue, 2009-09-01 at 14:50 -0400, Alvaro Herrera wrote:
> Aldrin Martoq escribió:
> > Hmmm... No encuentro la seccion RATIONALE... algun HINT ?
> > $ dpkg --listfiles manpages-posix manpages-posix-dev | grep -i rationa
> > $
> man pthread_getspecific
> NAME
> pthread_getspecific, pthread_setspecific - thread-specific data manage‐
> ment
> ...
> RATIONALE
> Performance and ease-of-use of pthread_getspecific() are critical for
Bah'... que estupidez de mi parte... gracias!
Volviendo a la pregunta original: Entiendo Eduardo que usas TSD por
temas de rendimiento. Me late que quieres compartir informacion
"estadistica" (contadores y ese tipo de cosas).
Te sugiero que en vez de cada thread actualice un area compartida cada
vez que aumenta un contador; que cada thread haga esta pega solo cuando
sea necesario. Una forma de hacerlo es con signals y pthread_kill() a
cada thread. Luego, cuando quieres obtener la informacion de todos los
threads, el thread "monitor" envia el evento a cada thread
"trabajolico", el cual es interrumpido solo para entrega dicha
informacion (en un area compartida!), y finalmente el thread "monitor"
realiza los calculos de resumen o lo que corresponda.
Ganas respecto a una variable global:
- el area TSD sigue siendo performante la mayor parte del tiempo.
Pierdes respecto a una variable global en:
- si obtener la informacion privada es muy seguido, no creo que sea
buena idea.
- no tendras la informacion al dia o exacta, pero una buena
aproximacion.
--
Aldrin Martoq <amartoq en dcc.uchile.cl>
http://aldrin.martoq.cl/
Más información sobre la lista de distribución Linux