📜  门|门模拟 2017 |第 30 题

📅  最后修改于: 2021-09-25 06:34:41             🧑  作者: Mango

考虑以下用于进程 P1 和 P2 的 C 代码。 a=4, b=0, c=0 (初始化)

P1                      P2
  if (a < 0)                b = 10;    
    c = b-a;                a = -3;
  else
    c = b+a;

如果进程 P1 和 P2 并发执行(共享变量 a、b 和 c),那么在两个进程完成后,以下哪个不能是 ‘c’ 的值?

(一) 4
(乙) 7
(三) 10
(四) 13答案: (C)
解释:

P1 : 1, 3, 4 -> c = 0+4 =4 {因此选项a}
P2 : i, ii 和 P1 : 1, 2 -> c = 10-(-3) = 13 {因此选项 d}
P1 : 1 , P2 : i, ii 和 P1 : 3, 4 -> c= 10+(-3) = 7 { 因此选项 b}
所以 10 不能是 c 值。这个问题的测验