欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IPC经典问题(哲学家)

程序员文章站 2022-07-04 22:12:35
...

哲学家就餐问题

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);
}