zoukankan      html  css  js  c++  java
  • 某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为3个。每次入、取缸水仅为1桶,且不可以同时进行。试用P、V操作给出小和尚、老和尚动作的算法描述。

    寺庙和尚打水
    设信号量mutex_gang, mutex_jing, gang_empty, gang_full, count分别表示使用缸互斥, 使用井互斥, 缸空, 缸满, 水桶总个数
    semaphore  mutex_jing = 1, mutex_gang = 1, gang_empty = 10, gang_full = 0, count = 3;
    void 小和尚打水()
    {
    	while(1)
    	{
    		p(gang_empty);
    		p(count);
    		p(mutex_jing);
    		从井中打水;
    		v(mutex_jing);
    		
    		p(mutex_gang);
    		将水倒入缸中;
    		v(mutex_gang);
    		v(count);
    		v(gang_full); 
    	}
    } 
    void 老和尚取水()
    {
    	while(1)
    	{
    		p(gang_full);
    		p(count);
    		p(mutex_gang);
    		从缸中取水;
    		v(mutex_gang);
    		v(count);
    		v(gang_empty); 
    	}
    } 
    
    void main()
    {
    	parbegin(小和尚打水(), 小和尚打水(), 老和尚取水(), 老和尚取水()...)
    }
    

      

  • 相关阅读:
    进阶面向对象(下)
    进阶面向对象(上)
    使用WIFI准备工作及配置内核——韦东山
    USB设备驱动程序1
    USB总线驱动程序
    USB驱动程序涉及的概念及框架
    I2C协议简介
    倾旋之slack主题协同
    1.影子制作
    11.快速选择工具
  • 原文地址:https://www.cnblogs.com/mjn1/p/10632091.html
Copyright © 2011-2022 走看看