i 是一个值为 5 的全局变量,函数 v() 由三个线程调用。
v()
{
i++;
i--;
}
线程不同步。
什么是没有。我的可能结果是什么?
输出将始终是i=5
因为i++
是单个语句(对于 也是如此),并且无论语句的i--
顺序是什么,结果始终是。i++
i--
i=5
如果你有int tmp = i; i = tmp + 1;
而不是i++
,你可以有,i≠5
因为int tmp = i; i = tmp + 1;
不是一个单一的陈述。
以下是两个线程(名为 A 和 B)的所有可能性:
| i = 5
A: i++ | i = 6
A: i-- | i = 5
B: i++ | i = 6
B: i-- | i = 5
| i = 5
A: i++ | i = 6
B: i++ | i = 7
A: i-- | i = 6
B: i-- | i = 5
| i = 5
A: i++ | i = 6
B: i++ | i = 7
B: i-- | i = 6
A: i-- | i = 5