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