名前付きMutex

提供: MonoBook
ナビゲーションに移動 検索に移動

名前付きミューテックス(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();

関連項目[編集 | ソースを編集]