我正在为C中的并发编程进行中期考试而修改,我坚持这个问题。
假设你有以下循环:
int x = 20;
for (int i = -3; i <= 7; i++)
x -= 2;
}
在单处理器机器上,5个线程同时执行后,变量int x可能的最小值和最大值是多少?
编辑:x当然是每个线程的共享(全局)变量。
答案 0 :(得分:7)
由于可能同时读写x
,程序的行为未定义。
需要通过互斥来控制对x
的访问,或者需要采取措施来确保x -= 2
原子。只有这样,我们才能谈论x
可能采取的可能值。