【操作系统】-同步互斥-【经典问题】-单生产者单消费者问题

【操作系统】-同步互斥-【经典问题】-单生产者单消费者问题

【同步关系】缓冲区不满才能继续生产,缓冲区不空才能够消费

【互斥关系】所有进程互斥访问缓冲区

【注意细节】注意,这里的“单”指消耗同一个产品单一类型消费者,要与多消费者区分

semaphore mutex=1//互斥访问缓冲区
semaphore empty=n;
semaphore full=0;

void Producer(){
   while(true)
   {
      p(empty);//消耗一个空位置放产品
      p(mutex);//互斥访问缓冲区
      produce();
      v(mutex);
      v(full);//生产了一个产品放入缓冲区
   }
}
void Consumer(){
   while(true)
   {
      p(fu1l);
      p(mutex);
      consume();
      v(mutex);
      v(empty);
   }
}

 

上一篇:.NET ------ CheckBoxList 的用法


下一篇:AcWing 133 蚯蚓 (队列)