1

i 是一个值为 5 的全局变量,函数 v() 由三个线程调用。

v()
{
    i++;
    i--;
}

线程不同步。
什么是没有。我的可能结果是什么?

4

1 回答 1

0

输出将始终是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
于 2012-06-20T13:28:44.560 回答