使用多线程实现生产者和消费者的机制

来源:互联网 发布:西安交通大学网络课程 编辑:程序博客网 时间:2024/05/17 01:14
#include <stdio.h>#include <string.h>#include <pthread.h>#include <stdlib.h>#include <semaphore.h>#include <fcntl.h>#include <unistd.h>#include <sys/ipc.h>#define MAX_SIZE 1024sem_t sem1,sem2;char buff[MAX_SIZE];void producer(void *arg){    do    {        sem_wait(&sem1);        printf("Producer enter some data:");scanf("%s",buff);sem_post(&sem2);            }while(strncmp(buff,"quit",4) != 0);}void customer(void *arg){    do    {        sem_wait(&sem2);        printf("Customer read is:%s\n",buff);sem_post(&sem1);            }while(strncmp(buff,"quit",4) != 0);}int main(){    pthread_t id1,id2;    sem_init(&sem1,0,1);    sem_init(&sem2,0,0);    if(pthread_create(&id1,NULL,(void *)producer,NULL) != 0)    {        printf("init producer error!\n");return -1;    }    if(pthread_create(&id2,NULL,(void *)customer,NULL) != 0)    {        printf("init customer error!\n");return -1;    }    pthread_join(id1,NULL);    pthread_join(id2,NULL);    return 0;}

0 0
原创粉丝点击