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

排他制御なしの同時更新は後の書込みが先の更新を消す(ロストアップデート)

ITパスポート2012年度 秋期80/データベース / トランザクション処理

在庫管理システムの処理フロー図。入力Aは処理[①“在庫数”を読み込み、入庫数の50を加える。④結果を“在庫数”に書き込む。]へ。入力Bは処理[②“在庫数”を読み込み、出庫数の30を引く。③結果を“在庫数”に書き込む。]へ。両方とも「在庫数」という共通のデータストアを読み書きする。実行順序は①→②→③→④:①でAが在庫数100を読み込み+50=150を計算(まだ書き込まず)。②でBが在庫数100を読み込み-30=70を計算。③でBが結果70を在庫数に書き込む(在庫数は70になる)。④でAが①で計算した150を書き込む(Bの更新を上書き)。よって最終的な在庫数は150。
在庫管理システムの処理フロー図。入力Aは処理[①“在庫数”を読み込み、入庫数の50を加える。④結果を“在庫数”に書き込む。]へ。入力Bは処理[②“在庫数”を読み込み、出庫数の30を引く。③結果を“在庫数”に書き込む。]へ。両方とも「在庫数」という共通のデータストアを読み書きする。実行順序は①→②→③→④:①でAが在庫数100を読み込み+50=150を計算(まだ書き込まず)。②でBが在庫数100を読み込み-30=70を計算。③でBが結果70を在庫数に書き込む(在庫数は70になる)。④でAが①で計算した150を書き込む(Bの更新を上書き)。よって最終的な在庫数は150。

選択肢

正解と解説

正解: 150

排他制御がないため、両方の処理が更新前の在庫数100を読み込んでしまう。入庫側は100+50=150、出庫側は100-30=70をそれぞれ計算し、先に出庫側が70を書き込んだ後、入庫側が150で上書きする。結果として出庫の更新が失われ、在庫数は150になる。これが更新結果の消失(ロストアップデート)である。

選択肢ごとの解説

出典:平成24年度 秋期 ITパスポート試験 問80(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。