信号量-PV操作题
PV操作 信号量semaphore PV操作 生产者消费者问题 读者写作问题 哲学家就餐问题 理发师睡觉问题 信号量semaphore 表示资源个数的整型量 >0 表示当前资源的个数 <0 其 绝对值 表示系统中因请求该类资源而造成的 阻塞进程 个数 PV操作 两条原语(一种特殊的操作 不能被系统中断 ) P(S)= -1分配一个可用资源 V(S)= +1释放一个资源 生产者消费者问题 共享一个缓冲区,生产者投放/消费者获取 semaphore mutex=1; //控制生产者消费者之一进入缓冲区 semaphore full=0; //缓冲区中满的个数 semaphore empty=n; //缓冲区中空的个数 main(){ cobegin producer(); consumer(); coend } producer(){ while(true){ 生产; P(empty); P(mutex); 将一个产品放入缓冲区; V(mutex); V(full); } } consumer(){ while(true){ P(full); P(mutex); 取一个产品出缓冲区; V(mutex); V(empty); 消费; } } 生产和消费操作中的P(占用)操作不能交换顺序,否则可能产生死锁 读者写作问题 多个读者可以同时访问数据集