i は値 5 のグローバル変数で、関数 v() は 3 つのスレッドによって呼び出されます。
v()
{
i++;
i--;
}
スレッドは同期されていません。
いいえは何ですか。i の可能な結果とそれらは何ですか?
i は値 5 のグローバル変数で、関数 v() は 3 つのスレッドによって呼び出されます。
v()
{
i++;
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;
2つのスレッド(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