[C con Clase] Problema sincronizacion hilos POSIX

Steven Davidson srd4121 en njit.edu
Mie Ago 11 18:24:45 CEST 2010


Hola Jorge,

Jorge Vega Sanchez wrote:
> Estoy haciendo una prueba para sincronizar 2 hilos (pthreads). Lo que 
> ando buscando es crear una barrera en ambos hilos para que a partir de 
> allí ambos hilos se ejecuten al mismo tiempo.
> 

[CORTE]

> *Solución obtenida con ese código.*
> 
> Se produce el sleep durante 3 segundos  y psoteriormente se muestra
> todo seguido por pantalla.
> 
> *Solucion deseada:*
> 
> Salidas en pantalla:
> hilo 1
> hilo2
> -- nada durante 3 segundos
> arriba hilo 1
> --espera un segundo - diferencial
> Depierta hilo 2
> 
> 
> El problema creo que está en las funciones del barrier pero  no
> consigo hacerlo funcionar bien.
> 
> Gracias de antemano, cualquier ayuda será bienvenida.
> 

No me he puesto a mirar las funciones que usas para manejar los hilos, 
pero sí me he fijado en el comportamiento que tienes y el que deseas. 
Creo que el problema está en los 'printf()'. Ten presente que 'printf()' 
acumula la información en un búfer para luego mostrarla toda de golpe 
cuando éste se llene. Para que aparezca algo en pantalla en el momento, 
usa 'fflush()'. Por ejemplo,

printf( "hilo 1" );

sleep( 3 );

Reescribe esto como:

printf( "hilo 1" );
fflush( stdout );

sleep( 3 );

Haz lo mismo para las demás invocaciones de 'printf()'.


Espero que esto te ayude.

Steven





Más información sobre la lista de distribución Cconclase