在这种情况下,int x的最小值和最大值是多少?

时间:2017-01-31 11:22:55

标签: c multithreading

我正在为C中的并发编程进行中期考试而修改,我坚持这个问题。

假设你有以下循环:

int x = 20;

for (int i = -3; i <= 7; i++)
    x -= 2;
}

在单处理器机器上,5个线程同时执行后,变量int x可能的最小值和最大值是多少?

编辑:x当然是每个线程的共享(全局)变量。

1 个答案:

答案 0 :(得分:7)

由于可能同时读写x,程序的行为未定义

需要通过互斥来控制对x的访问,或者需要采取措施来确保x -= 2 原子。只有这样,我们才能谈论x可能采取的可能值。