我有以下代码:
void Func()
{
boost::interprocess::named_mutex someMutex(boost::interprocess::open_or_create, "MyMutex");
boost::interprocess::scoped_lock<boost::interprocess::named_mutex> lock(someMutex);
// ... some stuff happens here
}
许多应用程序都在调用Func。如果Func中出现崩溃,互斥锁没有被释放,所以我正在考虑通过调用boost :: interprocess :: named_mutex :: remove(“MyMutex”)删除互斥锁,如果我检测到我的任何应用程序崩溃了
由于特殊情况,两个线程或进程同时进入受保护区域实际上是安全的,因为Func()的内容仅对第一个运行的应用程序执行操作。
我有两个问题:
现在我有一个“双重释放”的named_mutex,或者进程A在scoped_lock析构函数中没有做任何事情,因为它锁定的named_mutex已被删除了吗?