修了試験 2014-12-21実施分 基本情報技術者試験 問17
各タスクがタスク間共有変数を更新するときに,タスク間の同期制御を行わないと思わぬ結果を招くことがある。 タスク間共有変数xの初期値が3のとき,タスクAが代入文x=x+xを実行し,タスクBが代入文x=x×xを実行すると,最終的なxの値が12となるのは,どの番号で実行されたときか。 ここで,各代入文はそれぞれ次の四つの部分に分けて処理される。 タスクA(x=x+x) a1 xの値を参照しeとする。 a2 xの値を参照しfとする。 a3 e+fを計算しgとする。 a4 gによってxの値を更新する。 タスクB(x=x×x) b1 xの値を参照しhとする。 b2 xの値を参照しiとする。 b3 h×iを計算しjとする。 b4 jによってxの値を更新する。
正答2
解説
正解はイ。 a1→b1→b2→b3→b4→a2→a3→a4の順で追うと,a1でe=3,b1・b2でh=i=3,b3でj=h×i=9,b4でx=9に更新される。 続くa2ではxの最新値9をf=9として参照し,a3でg=e+f=3+9=12,a4でx=12となる。 他の順序では最終的にxは9や18などになり12にはならない。まとめて解く
修了試験 2014-12-21実施分を通しで解く(80問)→