各タスクがタスク間共有変数を更新するときに、タスク間の同期制御を行わないと思わぬ結果を招くことがある。タスク間共有変数 x の初期値が3のとき、タスク A が代入文 x = x + x を実行し、タスク B が代入文 x = x × x を実行すると、最終的な x の値が 12 となるのは、どの順番で実行されたときか。ここで、各代入文はそれぞれ次の四つの部分に分けて処理される。
ア | a1 → a2 → b1 → b2 → a3 → a4 → b3 → b4 |
イ | a1 → b1 → b2 → b3 → b4 → a2 → a3 → a4 |
ウ | b1 → a1 → a2 → a3 → a4 → b2 → b3 → b4 |
エ | b1 → b2 → b3 → a1 → a2 → a3 → a4 → b4 |
下図よりイが正解である。