平成19年 春期 ソフトウェア開発技術者 午前 問15

処理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がどちらが行われるかわからない。


キーワード
・並列処理の同期

キーワードの解説

戻る 一覧へ 次へ