int turn;
initially turn = 0; # Pi can enter its critical section if (turn == i)semaphore chopstick[5];
/* Initially all values are 1*/
do{
P(chopstick[i];)
P(chopstick[(i+1)%5]);
...
eat();
...
V(chopstick[i]);
V(chopstick[(i+1)%5]);
...
think();
...
} while(1);
condition x, y;x.wait();x.wait() 을 invoke 한 프로세스는 다른 프로세스가 x.signal()을 invoke 하기 전까지 suspend 된다
x.signal()
x.signal() 은 정확하게 하나의 suspend 된 프로세스를 resume 한다.
Suspend 된 프로세스가 없으면 아무 일도 일어나지 않는다.