我在跨进程共享名为 mutex 的 boost 时遇到问题,这些进程由不同的用户创建。第一个进程是由服务创建的,它以 LocalSystem 身份登录。第二个进程是我自己创建的(正常执行进程即可)。
两个进程都运行这个函数(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() 。只有当服务以“我自己”身份登录,然后我以管理员身份运行第二个进程时,才会出现此问题。
有没有办法通过提升或一些简单的代码来解决这个问题,而不是这个? http://support.microsoft.com/kb/193073
(我尝试将互斥锁名称设置为“Global\mymutex”,但无法创建互斥锁)(我也尝试使用 Windows CreateMutex(),但它也遇到了同样的问题,如 kb193073 中所述)
谢谢!
西蒙