进程P0和P1的共享变量定义及其初值为
boolean flag[2];
int turn = 0;
flag[0] = FALSE;
flag[1] = FALSE;
若进程P0和P1访问临界资源的类C伪代码实现如下:
void P0() { //进程P0
while (TRUE) {
flag[0] = TRUE;
turn = 1;
while (flag[1] && (turn == 1));
临界区;
flag[0] = FALSE;
}
}
void P1() { //进程P1
while (TRUE) {
flag[1] = TRUE;
turn = 0;
while (flag[0] && (turn == 0));
临界区;
flag[1] = FALSE;
}
}
则并发执行进程P0和P1时产生的情形是( )。
A. 不能保证进程互斥进入临界区,会出现“饥饿”现象
B. 不能保证进程互斥进入临界区,不会出现“饥饿”现象
C. 能保证进程互斥进入临界区,会出现“饥饿”现象
D. 能保证进程互斥进入临界区,不会出现“饥饿”现象