[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();
}
初级程序员
by: 云代码会员 发表于:2014-12-15 15:14:07 顶(0) | 踩(0) 回复
厉害
回复评论