gpt4 book ai didi

c++ - 如何避免 Process2 一直等待 Process1 释放 named_mutex 的情况

转载 作者:行者123 更新时间:2023-11-28 04:19:35 26 4
gpt4 key购买 nike

我有几个进程,但当时应该只有一个在运行。这意味着假设 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++ 中是否有类似 finally 机制的 c# 可以帮助解决这个用例?

最佳答案

最后在 C# 中是 RAII 的过程模拟。由于自动存储变量在 C++ 中具有确定性生命周期(范围方面),只需在析构函数中解锁即可。

std库类型为unique_lock; boost 会有一个类似的。锁定互斥锁,并在销毁时解锁。

关于c++ - 如何避免 Process2 一直等待 Process1 释放 named_mutex 的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55779071/

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