2012-06-10 3 views
0

J'ai dû écrire un programme avec du texte multithread en utilisant la bibliothèque ncurses pour le terminal Linux. J'ai essayé de le faire comme je le montre ci-dessous, mais ça marche mal. Avez-vous des idées pour vous organiser pour bien travailler?Sortie de texte multithread sans clignoter

#include <panel.h> 
#include <pthread.h> 

int main() 
{ 
    pthread_t t_out[5]; 
    for(i=1; i<13; i++) 
    pthread_create(&t_out[i],NULL,&text_out,&i); 
    pthread_t refr[5]; 
    pthread_create(&t_out[i],NULL,&refresh_all,NULL); 
} 

void text_out(void *coord) 
{ 
    int x = *(int *)coord; 
    int i; 
    for(i=1; i<10; i++) 
    { 
    move(i,x); 
    printw("*"); 
    sleep(1); 
    } 
} 


void refresh_all() 
{ 
    while(1) 
    { 
    clear(); 
    refresh(); 
    sleep(1); 
    } 
} 
+1

Veuillez être plus précis. Qu'est-ce qui fonctionne vraiment mal? –

+0

à première vue, peu de choses sont en désordre dans l'extrait que vous avez collé. Le premier tableau t_out a la taille 5 et vous le déréférencer jusqu'à 12. Deuxièmement, vous avez probablement créé refr et jamais utilisé cela, et à la place, vous avez passé t_out à nouveau à pthread_create. – mawia

+0

@mawia, vous avez absolument raison à ce sujet mais je l'écris comme ça seulement parce qu'il esquisse. Le problème principal est un clignotement du texte de sortie et j'ai blessé comment fixer le clignotement. – Max

Répondre

0

Eh bien, il me semble que vous effacez l'écran 5 fois par seconde, pas étonnant qu'il clignote.

Quoi qu'il en soit, il est préférable de garder la même pratique que les frameworks UI utilisés - gardez votre interface utilisateur en un seul thread.