首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

PV原语解决哲学家吃通心面有关问题之个人观点

2013-02-19 
PV原语解决哲学家吃通心面问题之个人观点PV原语解决哲学家吃通心面问题之个人观点PV信号量有互斥信号量,整

PV原语解决哲学家吃通心面问题之个人观点
PV原语解决哲学家吃通心面问题之个人观点
   PV信号量有互斥信号量,整型信号量还有记录型信号量以及多信号量(如AND信号量、一般信号量集),我们这里采用互斥信号量和整型信号量来解决哲学家吃通心面问题。
   我们先用代码(可能不满足具体的某种编程语言规范)来描述哲学家吃面问题的场景。(自然语言描述是五个哲学家围坐在一张圆桌旁,桌子中央一盘通心面(面假设无限),每个人面前有一只空盘,每两个人之间放一把叉子。为了吃面,每个哲学家都必须获得两把叉子,且只能从自己左边或右边取。则叉子就相当于临界资源,我们为每把叉子设置一个互斥信号量Si(i=0,1,2,3,4),初值均为1,表示均为被使用)。

 boolean binary_semaphore;   //定义互斥信号量    synchronized void p(boolean binary_semaphore){             while(!binary_semaphore){     //信号量被占用,此时空等   }              binary_semaphore = FALSE;   //取得信号量,并将信号量置为占用标识    }    synchronized void v(boolean binary_semphore){             binary_semaphore = TRUE;    //归还信号量,重新置信号量为可用标识    }

   其他单信号量的PV原语操作类似。
          
 

热点排行