[C con Clase] Problema sincronizacion hilos POSIX

Jorge Vega Sanchez memmaker650 en gmail.com
Jue Ago 12 17:28:59 CEST 2010


Muchas Gracias Steve
No sabía el matiz de printf que comentas. Probaré lo que comentas que ahora mismo ando un poco liado.
Supongo que con fflush también podré sacar por pantalla el valor de alguna variable.


El 11/08/2010, a las 18:24, Steven Davidson escribió:

> 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
> 
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ





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