ある在庫管理システムは,複数の入力を同時並行して処理し,在庫数を更新しているが,排他制御は行っていない。ある時点での在庫数が100であったとき,入力された二つの入力A,Bに応じて,図に示す処理が①→②→③→④の順序で実行された場合,処理④が終了した時点の在庫数は幾つになるか。

- ア70
- イ100
- ウ120
- エ150
正解と解説を見る
正解
エ 150
このシステムは排他制御(ロック)を行っていないため、複数の処理がほぼ同時に同じ在庫数(100)を読み込み、互いの更新結果を反映しないまま独自の計算結果を書き込んでしまう。その結果、先に書き込まれた処理の更新が後から書き込まれた処理によって上書きされて消えてしまう「更新の消失(ロストアップデート)」が発生し、①〜④の順で処理すると最終的な在庫数は150になる。排他制御があれば一方の処理が完了するまで他方を待たせられ、両方の増減が正しく反映されるが、この例ではそれができていない点が問題である。70や100、120は、両方の更新が正しく反映された場合や別の上書きのされ方を仮定した場合に生じる値であり、実際の処理順序とは一致しない。