【发布时间】:2012-06-19 02:13:16
【问题描述】:
我有一个关于比赛条件场景的问题。问题:
考虑以下两个线程,在共享中并发运行 内存(所有变量在两个线程之间共享)。
Thread A
for i = 1 to 5 do
x = x + 1;
Thread B
for j = 1 to 5 do
x = x + 1;
假设一个单处理器系统,加载和存储是原子的, x 初始化为 0,并且 x 必须加载到寄存器中 在递增之前(然后存储回内存),什么 两个线程都完成后 x 的所有可能值是多少?
现在答案是 2:10(含 2:10)。我理解 5:10 的结果,但 x 怎么可能是 2、3 或 4?
【问题讨论】:
标签: c concurrency parallel-processing