#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 1024
sem_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;
}
使用多线程实现生产者和消费者的机制
最新推荐文章于 2020-07-13 18:12:12 发布