线程同步

void *read_data();
char buf[64]={0};
sem_t sem1;
sem_t sem2;
int main()
{
    pthread_t thread1;
    pthread_t thread2;
    sem_init(&sem1,0,0);
    sem_init(&sem2,0,1);
    if(0!=pthread_create(&thread1,NULL,write_data,NULL))
    {
        perror("pthread_create thread1");
        exit(-1);
    }
    if(0!=pthread_create(&thread2,NULL,read_data,NULL))
    {
        perror ("pthread_create thread2");
        exit(-1);
    }
    pthread_join(thread1,NULL);
    pthread_join(thread2,NULL);
    return 0;
}
void *write_data()
{
    while(1)
    {
        sem_wait(&sem2);
        fgets(buf,64,stdin);
        sem_post(&sem1);
    }
}
void *read_data()
{
    while(1)
    {
        sem_wait(&sem1);
        printf("%s",buf);
        sem_post(&sem2);
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 13:05
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务