マルチコアと同期

読み書きロック(リーダー・ライターロック)の特徴として正しいものはどれか。

  1. A書き込むスレッドは何本でも同時に入れるが、読むスレッドは1本だけ
  2. B読むだけのスレッドは同時に何本でも入れるが、書き込むスレッドは1本だけで、そのときはほかの誰も入れない
  3. C読むときも書くときも、必ず1本のスレッドしか入れない
答えと解説を見る

正解:B. 読むだけのスレッドは同時に何本でも入れるが、書き込むスレッドは1本だけで、そのときはほかの誰も入れない

読むだけなら同時に行ってもデータは壊れないので、読み書きロックは読み手どうしの同時実行を許し、書き手だけを排他的にします。設定の表のように、読まれることが多く書き換えがまれなデータで並列性を高められます。ただし読み手が途切れないと書き手がいつまでも入れないことがあり、実装によっては書き手を優先する工夫がされています。

  • A. 逆です。
  • B. 正しい。読むことが多いデータに向いています。
  • C. それは普通のロック(ミューテックス)です。
この分野を解く 分野ページへ

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

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