回答編集履歴
1
誤記修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
恐らくですが、実行環境に依存してそのような結果になっています。動作させているPCが速過ぎて、`ThreadProcessP2`スレッドが走り始めて`A=0, B=
|
5
|
+
恐らくですが、実行環境に依存してそのような結果になっています。動作させているPCが速過ぎて、`ThreadProcessP2`スレッドが走り始めて`A=100, B=0`の状態がしばらく続き、その状態を出力し続け、`ThreadProcessP1`の実行が割り当てられたら一気に`A=0, B=100`まで処理を実行した後、`ThreadProcessP2`に実行が移っています。ちなみに当方の非力で遅いWindows PC(Windows 10の Cygwin環境)で試したところ、「A + B = 100」で正しく動きましたし、`std::lock_guard<std::mutex> lock(mutex);`を除去すると「A + B ≠ 100」となりました。
|
6
6
|
|
7
7
|
|
8
8
|
|