「名前付きMutex」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) |
(相違点なし)
|
2020年7月22日 (水) 02:02時点における版
名前付きミューテックス(named mutex, system mutex)とは、一部のOSに搭載されているプロセス間やスレッド間で排他制御を行うためのAPIである。
もともとはDEC社のVMSに搭載された排他制御を司るAPIであった。後にWindows NTやμITRONも移植された。
「名前付き」は取得要求するときに名前単位で区別されるものをいい、主にOS全体ではなく特定のプロセス間でのみ排他制御を行うときに用いられる。
排他制御の仕組みいろいろ考案されているが、Mutexは「取るか、取れられるか」ただそれだけ。非常にシンプルなのが特徴である。
// initiallyOwned:trueだとnewしたときに所有権を要求する
var mutex = new Mutex(initiallyOwned:false, name:"名前だ")
// 所有権を要求する(待ち時間0ミリ秒)
var hasHandle = mutex.WaitOne(0);
if (!hasHandle) {
// 残念
return;
}
// 所有権を廃棄する
mutex.ReleaseMutex();