kkamegawa's weblog

Visual Studio,TFS,ALM関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Mutexクラス説明の誤記?

http://msdn2.microsoft.com/ja-jp/library/9zf2f5bz(VS.80).aspx

名前付きミューテックスはシステム全体で有効なため、プロセス境界をまたがってリソース使用を調整するために使用できます。

とあるけれど、これはちょっと違うみたい。普通に名前付けオブジェクトを作るとセッションローカルのオブジェクトができて、Win32 API同様"Global\"のPrefixをミューテックス名に付けないとシステム全体で有効なミューテックスとはなりません。
ほとんどのプログラムではこれでいいのだけれど、Terminal Service対応する人はちょっと気をつけましょう。
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ja/cpref12/html/M_System_Threading_Mutex_OpenExisting_1_16219e3a.htm
に載っているプログラムで確認することができます。

const string mutexName = "MutexExample4"; //セッションローカル
const string mutexName = "Global\\MutexExample4"; //システムグローバル