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

你可能感兴趣的:(IPC经典问题(哲学家))