マルチコアと同期

ミューテックス(眠って待つロック)とスピンロックを比べた説明として正しいものはどれか。

  1. Aミューテックスは待つ間CPUを手放すので長い待ちに向くが、眠ったり起きたりにOSの手間がかかる
  2. Bミューテックスは待つ間もCPUを使い続けるので、短い待ちにしか使えない
  3. Cミューテックスとスピンロックは同じもので、名前が違うだけである
答えと解説を見る

正解:A. ミューテックスは待つ間CPUを手放すので長い待ちに向くが、眠ったり起きたりにOSの手間がかかる

ミューテックスは、ロックが取れないとスレッドを待ち状態にしてCPUをほかのスレッドに譲り、ロックが解放されるとOSが起こします。待つ間にCPUをむだにしないので長い待ちに向きますが、眠る・起きる処理とコンテキストスイッチに数マイクロ秒ほどかかります。実際のライブラリのミューテックスは、少しだけスピンしてから眠るなど、両方の長所を組み合わせています。

  • A. 正しい。待ち時間の長さで使い分けます。
  • B. それはスピンロックの特徴です。
  • C. 待ち方が違います。
この分野を解く 分野ページへ

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

  1. デッドロックの例として正しいものはどれか。
  2. 複数のロックを使うプログラムで、デッドロックを防ぐ方法として最も一般的なものはどれか。
  3. メモリ一貫性モデル(メモリコンシステンシモデル)が定めているものはどれか。
  4. 逐次一貫性(シーケンシャルコンシステンシ)の説明として正しいものはどれか。
  5. 上の2つのスレッドを別々のコアで同時に実行する(コンパイラによる並べ替えはないとする)。逐次一貫性では起こらないが、x86などの実際のCPUでは起こりうる結果はどれか。