gpt4 book ai didi

c++ - Boost named_mutex 无法在不同用户创建的进程之间共享

转载 作者:行者123 更新时间:2023-11-28 08:10:40 27 4
gpt4 key购买 nike

我在跨进程共享名为 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()。只有当服务以“我自己”身份登录,然后我以管理员身份运行第二个进程时,才不会出现此问题。

有没有办法通过 boost 或一些简单的代码来解决这个问题,而不是这个? http://support.microsoft.com/kb/193073

(我尝试将互斥量名称设置为“Global\mymutex”,但无法创建互斥量)(我也尝试使用 Windows CreateMutex(),但它也遇到同样的问题,如 kb193073 中所述)

谢谢!

西蒙

最佳答案

如果你说作为admin没有问题,可能是权限问题,试试这个:

void MyFunc()
{
//Open or create the named mutex
permissions allow_all;
allow_all.set_unrestricted();
named_mutex mutex(open_or_create, "mymutex", allow_all);
{
scoped_lock<named_mutex> lock(mutex);
DoSomeWork();
}
named_mutex::remove("mymutex");
}

关于c++ - Boost named_mutex 无法在不同用户创建的进程之间共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9169952/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com