ある在庫管理システムは,複数の入力を同時並行して処理し,在庫数を更新しているが,排他制御は行っていない。ある時点での在庫数が100であったとき,入力された二つの入力A,Bに応じて,図に示す処理が ① → ② → ③ → ④ の順序で実行された場合,処理④が終了した時点の在庫数は幾つになるか。 [処理内容] 入力A: ①"在庫数"を読み込み,入庫数の50を加える。 ④結果を"在庫数"に書き込む。 入力B: ②"在庫数"を読み込み,出庫数の30を引く。 ③結果を"在庫数"に書き込む。
エ. 150
正解はエ(150).排他制御なしの並行更新で,初期在庫100に対し入力A(入庫50加算)と入力B(出庫30減算)が①→②→③→④の順で実行された場合の最終結果を求める.①Aが在庫100を読込み(100+50=150を後で書込み予定),②Bが在庫100を読込み(100-30=70を後で書込み予定),③Bが70を書込み,④Aが150を書込み.結果は最後に書込んだAの150が残り,Bの更新は失われる(ロストアップデート).排他制御の必要性を示す典型問題で,並行処理時の不整合の代表例となる.周辺概念とセットで覚えると本問の正解選択肢が即座に判断できる.
ITパスポート 2012年 (平成24年 秋期) の過去問一覧へ戻る・問80