#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
//参数一:信号量标志
//参数二:0表示进程内通用,1表示进程间通用,一般0
//参数三:要设置的初始值是多少
int sem_wait(sem_t *sem); //让信号量的值-1,相当于p操作
int sem_post(sem_t *sem); //让信号量的值+1,相当于v操作
int sem_destroy(sem_t *sem); //销毁信号量
#include<stdio.h>#include<semaphore.h>#include<stdlib.h>#define PRO 3#define COR 2#define BUFFSZ 5
sem_t full_id;
sem_t empty_id;
pthread_t tid[PRO+COR];
pthread_mutex_t mutex;int buf[BUFFSZ];int in =0;int out =0;int ready =1;void*pro(void*arg){
int id =*(int*)arg;int i;while(1){
sem_wait(&full_id)