問3 流れ図に示す処理の動作の記述として、適切なものはどれか。ここで、二重線は並列処理の同期を表す。
ア ABC又はACBを実行してデッドロックになる。
イ AB又はACを実行してデッドロックになる。
ウ Aの後にBC又はCB、BCまたはCB、・・・と繰り返して実行する。
エ Aの後にBの無限ループ又はCの無限ループになる。
正解 ウ
解説
この問題のキモは「二重線は並列処理の同期を表す」です。
BとCの下に二重線があるため、「Bが先に実行されるとCの実行を待つ、Cが先に実行された場合はBの実行を待つ」事が分かります。
ステップ1
まず、Aが実行され、続いてBまたはCが実行されます。
この図ではBを実行していますが、BCどちらが先に実行されるかの規定はありません。
ステップ2
Bが実行されたら、二重線のところでCの実行を待ち、Cが実行されたらBの実行を待ち、二重線の所で同期を取ります。
二重線の所で同期をとるため、BBBB・・・やCCCC・・・・と連続で実行されることはないのでエは不正解です。
ステップ3
BC共に二重線まで到着したら、またBCのどちらかを先に実行し、残りの実行を待ち、またBCの・・・と繰り返しになります。
よって、ウが正解です。
また、この流れ図の中に「ロック」している箇所がないため「デッドロック」はありえません。
最終更新:2013年07月07日 10:59