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