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

时间:2019-04-21 01:09:40

标签: c++ visual-studio boost mutex boost-interprocess

我有多个进程,但当时只能运行一个。这意味着 Process1 正在运行,并且如果 Process2 启动,则 Process2 应该等到 Process1 做完了。我正在考虑使用以下代码实现 boost 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#像final机制的c ++可能对您有所帮助?

1 个答案:

答案 0 :(得分:1)

最后,在C#中是RAII的过程仿真。由于自动存储变量在C ++中具有确定的生命周期(作用域范围内),因此只需在析构函数中进行解锁即可。

item1 2 stocks库类型为 addcart(val) { this.$axios .post( '/api/cart/addcart', { item: val, amount: 1, }, { headers: token, }, ) .then(({ data }) => { console.log('added') }) .catch(err => { this.$swal.fire({ type: 'error', text: err.response.data.error, }); }); } ;提振将有类似的。锁定互斥锁,并在销毁时解锁。