ソフトウェア
ミューテックス(Mutex)とセマフォ(Semaphore)の違いとして最も正しいものはどれか。
ア.ミューテックスはロックしたスレッドのみがアンロックできる相互排除ロックで、セマフォは複数リソースの同時アクセス数を制御できるカウンタである正解
イ.ミューテックスは複数スレッドが同時にロックできるが、セマフォは1スレッドのみがロックできる
ウ.ミューテックスはOSレベルのみで使用でき、セマフォはユーザ空間でしか使えない
エ.ミューテックスとセマフォは完全に同等であり、どちらも同じ用途に使用できる
解説
ミューテックスは「マスターキー方式のトイレ」。鍵をかけた人だけが開けられる(所有権あり)。セマフォは「駐車場の空き台数カウンター」。満車(0)になると入れないが、出た分だけまた入れる。駐車場は「誰でも空いた枠に入れる」から、ミューテックスより柔軟に複数アクセスを制御できる!
なぜ ア が正解か
ミューテックスの特徴:①バイナリ(0か1)②所有権あり:ロックしたスレッドだけがアンロック可能③相互排除(Critical Section保護)に使う。セマフォの特徴:①カウンタ(0以上の整数)②所有権なし:異なるスレッドがsignal(V操作)可能③カウンタ=n→n個の同時アクセスを許可(バイナリセマフォ=ミューテックスに似るが所有権がない)。DBコネクションプール管理などにセマフォが向く。
出典: AI生成問題(学習用)