IPC经典问题(哲学家)


哲学家就餐问题

5名哲学家坐成环,每个哲学家之间放一个筷子,当哲学家饥饿的时候会先后拿起两只筷子拼成一双筷子。与左右邻居是互斥访问。

方法一:容易死锁

chopstick[5]={1};
Pi(){
  do{
    P(chopstick[i]);
    P(chopstick[(i+1)%5]);
    eat;
    V(chopstick[i]);
    V(chopstick[(i+1)%5]);
    think;    
  }while(1);
}

方法二:

mutex=1;
chopstick[5]={1};
Pi(){
  do{
        P(mutex);
        P(chopstick[i]);
        P(chopstick[(i+1)%5)];
        V[mutex];
        eat;
        V(chopstick[(i+1)%5)];
        V(chopstick[i]);
        think;
  }while(1);
} 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容