1. 多线程
线程id类型:pthread_t
多线程相关函数:
pthread_create
pthread_exit
2. 信号量
信号量类型:sem_t
相关函数名:
sem_init
sem_wait
sem_post
例程
/*
* Includes
*/
/*
* Contants
*/
sem_t s1; // 信号量1
sem_t s2; // 信号量2
/* 线程routine */
void *routine(void *arg)
{
char *buf = (char *)arg;
while(1)
{
sem_wait(&s1);
if(strlen(buf) == 0)
break;
printf("%d bytes\n", strlen(buf));
sem_post(&s2);
}
pthread_exit(NULL);
}
int main(int argc, char **argv)
{
char buf[20];
sem_init(&s1, 0, 0);
sem_init(&s2, 0, 1);
pthread_t tid;
pthread_create(&tid, NULL, routine, (void *)buf);
while(1)
{
sem_wait(&s2);
bzero(buf, 20);
if(fgets(buf, 20, stdin) == NULL)
break;
sem_post(&s1);
}
sem_post(&s1);
pthread_exit(NULL);
}
阅读(123) | 评论(0) | 转发(0) |