C/Visual C - buffer de salida: ese no es el prob.

 
Vista:

buffer de salida: ese no es el prob.

Publicado por trasgu (2 intervenciones) el 25/05/2002 20:13:03
Gracias, pero no he sido suficientemente explicito. Por supuesto que uso semaforos, de hecho es asi como simulo la pelota ;). Los 22 hilos respetan totalmente la concurrencia. El problema no es ese, es mas de fondo, o mejor dicho, un pequeño detalle con importancia. Es un problema de buffer de salida, creo, porque la funcion fprintf(stdout," ") (que es la que uso en este caso), envia los mensajes al buffer en vez de al tty directamente, de modo que salen desordenados, es decir, de mas a menos recientemente. La solucion creo que es saltarme el buffer, pero no se como hacerlo. Lo he intentado con stty, y con setvbuf pero no he sido capaz (aunque creo que stbuf tiene un a macro usada para ello en el argumento de modo). En fin, alguna otra idea :)?
gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:buffer de salida: ese no es el prob.

Publicado por chuidiang (677 intervenciones) el 25/05/2002 21:59:38
No te lo puedo asegurar, pero yo creo que el buffer de salida para stdout debe ser único (siempre que no lo abras con fopen(), que no es lo habitual ya que por defecto está abierto), por lo que el orden en el que cada hilo escriba debería respetarse, siempre y cuando asegures que no hay dos hilos escribiendo a la vez. En cualquier caso fflush() debería volcar el buffer en pantalla.
Lo único que se me ocurre para confirmar o descartar si es problema del buffer es que pongas un contador global inicializado a 0. Cada vez que un hilo quiera sacar un mensaje, escribe el mensaje y el valor del contador y luego lo incrementa. Con esto puedes verficar si el orden en que los hilos escriben es el orden en el que sale en pantalla.
Espero que te sirva de ayuda.
Se bueno.
Por cierto, yo también soy asturiano (según deduzco de tu nick).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar