読者です 読者をやめる 読者になる 読者になる

技術士の技事録

情報工学部門の技術士が、IT技術動向、資格対策等を、勝手気ままに語ります。

技術士第一次試験専門科目 平成22年度 Ⅲ-12

技術士試験 一次試験 専門科目

問題

インターネット通販を行っているある商店では,次のC言語のプログラムを用いて売上高の集計を行っている。商品の売り上げがあると関数calculateが呼び出され売上高が加算される。複数人の買い物客が同時に買い物を行うと,複数のスレッドが作られ,スレッド切替えを繰り返しながら関数calcu工a七eが実行されることがある。共用変数earningsは売上高,変数priceは売り上げた商品の定価,変数discoun七は割引額である。共用変数earningsへの相互排除(排他制御ともいう)を実現するため,排他ロックを用いることとした。ロック変数Lを獲得する命令lock(L)とロックを解放する命令unlock(L)を挿入する位置として,正しいものを㈰㈭の中から選べ。ただし,ロックを獲得している期間は,できるだけ短くなるようにせよ。なお,プログラムの行頭の数字は行番号を表す。

1 int earnings; /女売上高.スレッド間で共用される*/
2 
3 void calculate(int price, int discount){
4  intx;
5  price=price-discount;
6  x=earnings;
7  x=x+price;
8  earnings=x;
9 }

選択肢

lock(L)は4行固と5行目の間,unlock(L)は8行自と9行目の間に挿入する。
lock(L)は5行目と6行自の間,unlock(L)は8行目と9行目の間に挿入する。
lock(L)は5行目と6行目の間,unlock(L)は6行目と7行目の間に挿入する。
lock(L)は7行目と8行目の間,unlock(L)は8行目と9行自の間に挿入する。
lock(L)は5行巨と6行自の間と7行自と8行目の間,unlock(L)は6行目と7行目の聞と8行目と9行目の聞に挿入する。

 

答え

 ②

解説

 

次の問題へ専門科目TOPへ技術士TOPへ