第 32 题
有两个并发执行的进程 P1 和 P2,共享初值为 1 的变量 x。P1 对 x 加 1,P2 对 x 减 1。加 1 和减 1 操作的指令序列分别如下所示。
P1 // 加 1 操作
load R1, x // 取 x 到寄存器 R1 中
inc R1
store x, R1 // 将 R1 的内容存入 x
P2 // 减 1 操作
load R2, x // 取 x 到寄存器 R2 中
dec R2
store x, R2 // 将 R2 的内容存入 x
两个操作完成后,x 的值( )。
A. 可能为 -1 或 3
B. 只能为 1
C. 可能为 0、1 或 2
D. 可能为 -1、0、1 或 2
[tag_link]
正确答案:C
将P1中 3 条语句依次编号为 1,2,3;P2中 3 条语句依次编号为 4,5,6。依次执行 1,2,3,4,5,6 得结果 1,依次执行 1,2,4,5,6,3 得结果 2,执行 4,5,1,2,3,6 得结果 0。因此结果 -1 不可能得出。