我有多个进程,但当时只能运行一个。这意味着 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 ++可能对您有所帮助?
答案 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,
});
});
}
;提振将有类似的。锁定互斥锁,并在销毁时解锁。