問題
マルチスレッドプログラミングで生じる「競合状態(レースコンディション)」を防ぐために使用される機構として、最も不適切なものはどれか。
選択肢
- 1ミューテックス(Mutex)
- 2モニタ(Monitor)
- 3スピンロック(Spinlock)
- 4メモリリーク検出器
正解
4. メモリリーク検出器
詳しい解説を見る解説を閉じる
解説
競合状態(レースコンディション)は、複数のスレッドが共有資源へ同時にアクセスし、実行タイミングによって結果が変わってしまう不具合であり、防止には共有資源へのアクセスを一度に1つのスレッドへ限定する排他制御(同期機構)が必要となる。ミューテックスはロックの獲得・解放によって排他を実現する基本機構、モニタは排他制御と条件待ちを構造化して提供する仕組み、スピンロックはロックが空くまでループで待ち続ける(ビジーウェイト)軽量な排他機構であり、いずれも競合状態の防止に使用される。一方、メモリリーク検出器は解放し忘れたメモリ領域を発見するデバッグ・解析用のツールであり、スレッド間の同期とは無関係なので、これが正解(不適切なもの)となる。「排他制御の道具か、デバッグの道具か」で区別すればよい。
一問一答
全400問を繰り返し学習