实现临界区互斥——单标志法理解 #操作系统
#include <stdio.h>
// 实现临界区互斥——单标志法理解
// 代码如下:
int main() {
// 表示当前允许进入临界区的进程号,此处即进程下标
int turn = 0;
// P0 进程
while (turn != 0); // 进入区
// critical section; // 临界区
turn = 1; // 退出区
printf("%d\n", turn);
// remainder section; // 剩余区
// P1 进程
while (turn != 1); // 循环(1)
// critical section;
turn = 0;
printf("%d\n", turn);
// remainder section;
}
// 假设turn初始值为0,即刚开始只允许0号进程进入临界区。
// 若P1进程先与P0上处理机运行,则会一直卡在循环(1)。
// 直到P1的时间片用完,发生调度,切换P0上处理机运行,
// P0可以正常访问临界区,退出并设置turn为1后,P1在下一次
// 上处理机时才可以访问临界区。