如何避免Process2一直等待Process1释放named_mutex的场景

问题描述 投票:0回答:1

我有几个进程,但当时只有一个进程。这意味着让我们说Process1正在运行,如果Process2启动,那么Process2应该等到Process1完成。我正在考虑使用下面的代码来提升named_mutex。

#include <iostream>
#include <boost/interprocess/sync/named_mutex.hpp>

using namespace boost::interprocess;

int main()
{
    named_mutex mutex(open_or_create, "some_name");

    try
    {
        mutex.lock();

        // Do work

        mutex.unlock();
    }
    catch (const std::exception& ex)
    {
        mutex.unlock();
        std::cout << ex.what();
    }
}

问题: 1.我想确保如果Process1遇到任何处理/未处理的异常,那么Process2不会缺乏获取锁定的情况? 2.在这个用例中是否有任何c#like finally机制在c ++中有用?

c++ visual-studio boost mutex boost-interprocess
1个回答
1
投票

最后在C#中是RAII的程序仿真。由于自动存储变量在C ++中具有确定性生命周期(范围方面),因此只需在析构函数中执行解锁。

std库类型是unique_lock;提升将有类似的。有锁定互斥锁,解锁时解锁。

© www.soinside.com 2019 - 2024. All rights reserved.