問9 流れ図

流れ図に示す処理の動作の記述として、適切なものはどれか。ここで、二重線は並列処理の同期を表す。

  1. Aの後にBC又はCB、BC又はCB、・・・と繰り返して実行する。
  2. Aの後にBの無限ループ又はCの無限ループになる。
  3. ABC又はACBを実行してデッドロックになる。
  4. AB又はACを実行してデッドロックになる。

BとCの実行後に同期処理が入ることから、どちらかが無限ループになることはありません。2は選択肢から外します。
デッドロックが起こる可能性はあるでしょうか。デッドロックとは、「円形のテーブルに並んだ食事客が、まず右手に1本だけ置かれた箸を手に取り、次に左手の箸を取ろうとしてフリーズする」と喩えられるとおり、二つの依存するプロセスが互いの処理待ちになってフリーズしてしまう現象です。ここでBもCも相手の状態に依存せずに動作しますから、デッドロックは発生しません。1が正解で、BCまたはCBと繰り返して処理が続きます(実行される順番は不定です)。