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