異なるユーザーによって作成されたプロセス間でmutexという名前のブーストを共有する際に問題があります。最初のプロセスは、LocalSystemとしてログオンするサービスによって作成されます。2番目のプロセスは自分で作成します(プロセスを通常どおり実行するだけです)。
両方のプロセスがこの関数を実行します(C ++):
void MyFunc()
{
//Open or create the named mutex
named_mutex mutex(open_or_create, "mymutex");
{
scoped_lock<named_mutex> lock(mutex);
DoSomeWork();
}
named_mutex::remove("mymutex");
}
現在、両方のプロセスがDoSomeWork()に同時に入ることができることを確認しています。この問題は、サービスが「自分」としてログオンした場合にのみ発生するわけではなく、2番目のプロセスを管理者として実行します。
これの代わりに、ブーストまたはいくつかの単純なコードでこの問題を解決する方法はありますか? http://support.microsoft.com/kb/193073
(ミューテックス名を「Global \ mymutex」に設定しようとしましたが、ミューテックスを作成できません)(Windows CreateMutex()も使用しようとしましたが、kb193073で説明したように、同じ問題が発生します)
ありがとう!
サイモン