初始时,环形队列中全是空格:生产者要在空位置处生产数据;
生产者生产数据:申请格子信号量----生产数据----释放数据信号量
消费者消费数据:申请数据信号量----消费数据----释放格子信号量
void Put(int &in)----生产者生产数据,P操作->往环形队列中放置数据->V操作
void Get(int &out)----消费者消费数据,P操作->从环形队列里面取数据->V操作
class RingQueue
{
private:
vector<int> vec; //利用数组来实现环形队列,这里使用c++中的vector迭代器
int max_cap; //环形队列的最大容量
//利用信号量,其本身就是一个计数器
sem_t sem_blank; //格子:生产者
sem_t sem_data; //数据:消费者
int p_index; //标记生产者位置的下标
int c_index; //标记消费者位置的下标
void P(sem_t &s){
//POSIX信号量中,P操作用sem_wait()---count--;
sem_wait(&s); //申请信号量
}
void V