マルチコアと同期
ミューテックス(眠って待つロック)とスピンロックを比べた説明として正しいものはどれか。
- Aミューテックスは待つ間CPUを手放すので長い待ちに向くが、眠ったり起きたりにOSの手間がかかる
- Bミューテックスは待つ間もCPUを使い続けるので、短い待ちにしか使えない
- Cミューテックスとスピンロックは同じもので、名前が違うだけである
答えと解説を見る
正解:A. ミューテックスは待つ間CPUを手放すので長い待ちに向くが、眠ったり起きたりにOSの手間がかかる
ミューテックスは、ロックが取れないとスレッドを待ち状態にしてCPUをほかのスレッドに譲り、ロックが解放されるとOSが起こします。待つ間にCPUをむだにしないので長い待ちに向きますが、眠る・起きる処理とコンテキストスイッチに数マイクロ秒ほどかかります。実際のライブラリのミューテックスは、少しだけスピンしてから眠るなど、両方の長所を組み合わせています。
- A. 正しい。待ち時間の長さで使い分けます。
- B. それはスピンロックの特徴です。
- C. 待ち方が違います。