処理1と処理2が交互に繰り返し実行される流れ図はどれか。
ここで、二重線は並列処理の同期を表す。
ア | |
イ | |
ウ | |
エ |
答え イ
【解説】
ア | 開始からの処理は“処理1→処理2”と行われるが、処理2(右)側は戻った上の二重線で同期待ちをするが、処理1(左)側はここに来ないので、処理2側は一番上の二重線で同期待ちで止まってしまう。また、処理1側は真ん中の二重線で同期待ちで止まってしまう。 処理としては“開始→処理1→処理2→処理1(デッドロック)”である。 |
|
イ | 開始のあと処理は“処理1→処理2”と行われ、その後も処理2(右)側は真ん中の二重線で処理1(左)側を待ち、処理1側は下の二重線で処理2側を待つので、処理としては“開始→処理1→処理2→処理1→処理2→…→処理1→処理2”になる。 | |
ウ | 開始して上の二重線で同期した後、処理1が行われ、処理2側は下の二重線で処理1側を待つ。処理1を行って下の二重線に達し同期すると、処理1と処理2が行われる。 このとき、処理1と処理2を行う順序としてどちらが先に行われるかの保証がないので、処理1と処理2が交互に行われるかわからない。 |
|
エ | 開始して上の二重線で同期した後、処理1と処理2がどちらが行われるかわからない。処理1と処理2が行われた後。下の二重線で同期を行うが、その後も戻った先でも、処理1と処理2がどちらが行われるかわからない。 |
【キーワード】
・並列処理の同期