Advertisement

基于信号量机制的生产者消费者循环队列设计

阅读量:
复制代码
 #include<cstdio>

    
 #include<vector>
    
 #include<pthread.h>
    
 #include<semaphore.h>
    
  
    
 #define MAX_QUEUE 5
    
 class RingQueue{
    
 	  public:
    
 		RingQueue(int maxq=MAX_QUEUE):_arry(maxq),_capacity(maxq),_write_step(0),_read_step(0){
    
 		  sem_init(&_sem_lock,0,1);
    
 		  sem_init(&_sem_idle,0,maxq);
    
 		  sem_init(&_sem_data,0,0);
    
 		}
    
 		~RingQueue(){
    
 		  sem_destroy(&_sem_data);
    
 		  sem_destroy(&_sem_idle);
    
 		  sem_destroy(&_sem_lock);
    
 		}
    
 		bool push(int data){
    
 		  sem_wait(&_sem_idle);//判断有没有空闲空间

全部评论 (0)

还没有任何评论哟~