经典同步问题
哲学家就餐问题
#define N 5 // 哲学家个数
semaphore fork[5]; // 信号量初值为1
void philosopher(int i){ // 哲学家编号:0-4
while(TRUE){
think(); // 哲学家在思考
P(fork[i]); // 去拿左边的叉子
P(fork[(i+1)%N]); // 去拿右边的叉子
eat(); // 吃面条
V(fork[i]); // 放下左边的叉子
V(fork[(i+1)%N]); // 放下右边的叉子
}
}生产者-消费者问题
读者-写者问题
写者进程
读者进程
Last updated