427
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
#define NUMBER 1
void *producer(void *arg);
void *consumer(void *arg);
int queue[NUMBER];
sem_t blank_number, product_number;
int main(int argc, char *argv[])
{
pthread_t pid, cid;
sem_init(&blank_number, 0, NUMBER);
sem_init(&product_number, 0, 0);
pthread_create(&pid, NULL, producer, NULL);
pthread_create(&cid, NULL, consumer, NULL);
pthread_join(pid, NULL);
pthread_join(cid, NULL);
sem_destroy(&blank_number);
sem_destroy(&product_number);
}
void *producer(void *arg)
{
int p = 0;
while(1)
{
sem_wait(&product_number);
printf("生产1\n");
sem_post(&blank_number);
sleep(rand()%5); //随机休眠1-5秒钟
}
}
void *consumer(void *arg)
{
int c = 0;
while(1)
{
sem_wait(&blank_number);
printf("消费1\n");
sem_post(&product_number);
sleep(rand()%5); //随机休眠1-5秒钟
}
}
不明白什么叫有限缓冲区,但是代码大概是这个样子