マルチコアと同期

カウンタ付きのセマフォの使い方として最も適切なものはどれか。

  1. A1つの変数の値を、必ず2倍にする
  2. Bプログラムの実行をすべて1つのスレッドにまとめる
  3. C同時に使える数が決まっている資源(例: 接続が4本まで)を、4つのスレッドまで同時に使わせる
答えと解説を見る

正解:C. 同時に使える数が決まっている資源(例: 接続が4本まで)を、4つのスレッドまで同時に使わせる

セマフォは、残りの数を表すカウンタを持ち、使う前に1減らし(0なら増えるまで待つ)、使い終わったら1増やします。初期値を4にすれば、同時に4つまでのスレッドが資源を使えます。初期値を1にすれば、ロックのように排他に使えます。待っているスレッドは眠らせてOSが起こすのが一般的です。

  • A. 値の計算をするものではありません。
  • B. 並列の実行を制限するものですが、1つにまとめるわけではありません。
  • C. 正しい。カウンタで残りの数を管理します。
この分野を解く 分野ページへ

マルチコアと同期のほかの問題

  1. キャッシュコヒーレンシとメモリ一貫性モデルの違いとして正しいものはどれか。
  2. ハードウェアトランザクショナルメモリの考え方として正しいものはどれか。
  3. 条件変数で「キューが空でなくなるまで待つ」とき、待ちから起きた後に条件をif文ではなくwhile文で確かめ直す理由として正しいものはどれか。
  4. 2つのコアがそれぞれ自分のキャッシュに変数xのコピーを持っている。コア0がxに書き込んだあと、コア1がxを読むときに、キャッシュコヒーレンシの仕組みがなければ起こりうる問題はどれか。
  5. キャッシュコヒーレンシのプロトコルであるMESIの4つの状態の組み合わせとして正しいものはどれか。