用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

多线程的使用

2014-12-06 作者: 德良举报

[c]代码库

#include<pthread.h>
#include<curses.h>
#include<math.h>
struct Achar{
  int x;
  int y;
  int speed;
  char a;
};

int stop=1;
pthread_t t[26];
pthread_t tid;
pthread_mutex_t m;//互斥量
struct Achar a[26];

void *run(void *d)
{
  int id;
  static idx=-1;
  idx++;
  id=idx;
  while(stop)
  {
    pthread_mutex_lock(&m);
    a[id].y+=a[id].speed;
    if(a[id].y>=LINES)
    {
      a[id].y=rand()%(LINES/4);
    }
    pthread_mutex_unlock(&m);
    sched_yield();
    usleep(100000);
  }
}

void *update(void *d)
{
  int i;
  while(1)
  {
    erase();
    for(i=0;i<26;i++)
    {
      mvaddch(a[i].y,a[i].x,a[i].a);
    }
    refresh();
    usleep(10000);
  }
}

main()
{
  int i;
  initscr();
  curs_set(0);
  noecho();
  keypad(stdscr,TRUE);
  for(i=0;i<26;i++)
  {
    a[i].x=rand()%COLS;
    a[i].y=rand()%LINES;
    //a[i].speed=1+rand()%10;
    a[i].speed=1;
    a[i].a='*';
  }
  pthread_mutex_init(&m,0);
  pthread_create(&tid,0,update,0);
  for(i=0;i<26;i++)
  {
    pthread_create(&t[i],0,run,0);
  }
  getch();
  stop=0;
  for(i=0;i<26;i++)
  {
    pthread_join(t[i],(void **)0);
  }
  pthread_join(tid,(void **)0);
  pthread_mutex_destroy(&m);
  endwin();
}


网友评论    (发表评论)

共2 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...