问题 单项选择题

有两个并发进程如下面所示,对于这段程序的运行,正确的说法是______。
PARBEGIN
var x: integer;
process P1process P2
var y, z: integer;var t, u: integer;
BEGIN BEGIN
x: =1; x: =0;
y: =0; t: =0;
if x>=1 then y: =y+1; if x<=1 then t: =t+2;
z: =y; u: =t;
ENDEND
PAREND

A.程序能正确运行,结果唯一
B.程序不能正确运行,可能有两种结果
C.程序不能正确运行,结果不确定
D.程序不能正确运行,可能会死锁

答案

参考答案:C

解析: 本题考查进程的并发执行。本题中两个进程不能正确地工作,运行结果有多种可能性,请见下面说明。
1) x: =1; 5) x: =0;
2) y: =0; 6) t: =0;
3) if x>=1 then y: =y+1; 7) if x<=1 then t: =t+2;
4) z: =y; 8) u: =t;
不确定的原因是由于使用了公共的变量x,考察程序中与x变量有关的语句共四处,若执行顺序是1)→2)→3)→4)→5)→6)→7)→8)时,结果是y=1,z=1,t=2,u=2,x=0;当并发执行过程为1)→2)→5)→6)→3)→4)→7)→8)时,结果是y=0,z=0,t=2,u=2,x=0;
若执行顺序是5)→6)→7)→8)→1)→2)→3)→4)时,结果是y=1,z=1,t=2,u=2,x=1:
当并发执行过程为5)→6)→1)→2)→7)→8)→3)→4)时,结果是y=1,z=1,t=0,u=0,x=1。可见结果有多种可能性。

单项选择题
多项选择题