Cuando imprimo desde un hilo, obtengo una salida extraña en C usando ncurses.
Este es mi hilo para el temporizador que uso:
void *timer(void *arg){
current = time(0);
stop = current + 30;
while (1){
current = time (0);
if (current <= stop){
now=stop-current;
mvprintw(0,0,"%d",now);
refresh();
}
}
return NULL;
}
Olvidé mencionar que estoy usando:
pthread_t timerth; pthread_create(&timerth, NULL, timer, NULL);
Necesito imprimir el valor “timerleft”, pero la salida se ve así:
¿Hay alguna forma de imprimirlo normalmente? ¿Me falta algo?
Gracias por la ayuda.
davy.ai
El problema con la salida es que el valor impreso se está sobrescribiendo en la misma línea sin borrar el valor anterior. Esto resulta en que la salida aparezca desordenada.
Para imprimir el valor normalmente, puede agregar un comando para borrar la línea antes de emitir el nuevo valor. También puede agregar un comando sleep para reducir el uso de la CPU mientras espera que expire el temporizador.
Aquí hay una versión actualizada del código:
En esta versión, la línea se borra después de cada salida, y hay un retraso de 1 segundo entre cada salida. El mensaje final también se imprime cuando el temporizador expira.
Tenga en cuenta que la función
pthread_create
no está presente en el código que proporcionó. Debe agregar esta función para crear el hilo del temporizador.