多线程文本输出,无闪烁

时间:2012-06-10 14:57:31

标签: c linux ncurses

我不得不使用针对Linux终端的ncurses库编写一些带有多线程文本的程序。我尝试像下面显示的那样做,但它工作得很糟糕。你对如何组织好工作有什么想法吗?

#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 个答案:

答案 0 :(得分:0)

好吧,在我看来,你每秒清理屏幕5次,难怪它会眨眼。

无论如何,最好在各地使用相同的练习UI框架 - 将UI保存在一个线程中。