方法一:加一个资源信号量 Var chopstick:array[0…4] of semaphore=(1,1,1,1,1); Var count:semaphore:=4; 第i个哲学家的活动: repeat wait(count); wait(chopstick[i]); wait(chopstick[i+1] mod 5); eat; signal(chopstick[i]); signal(chopstick[i+1] mod 5); signal(count); think; Until false; 方法二:左、右两只筷子均可用时,才允许拿起进餐 Var chopstick: array[0,…,4] of semaphore:=(1,1,1,1,1) Process i Repeat think; swait(chopstick[(i+1)mod 5],chopstick[i]); eat; ssginal(chopstick[(i+1)mod 5],chopstick[i]); Until false; And 信号量机制解决。每个筷子设一个信号量P62. 方法三 Var chopstick:array[0…4] of sem
原创力文档

文档评论(0)