c++ - 具有作用域/代码块的互斥锁/锁

标签 c++ multithreading c++11 mutex standard-library

我记得在某个 session 上看到过,但是找不到这方面的任何资料。

我想要这样的东西:

lock(_somelock)
{
    if (_someBool)
        return;

    DoStuff();
} // Implicit unlock

代替:

lock(_somelock);
if (_someBool)
{
    unlock(_somelock);
    return;
}

DoStuff();
unlock(_somelock);

如您所见,代码因多个早期返回而变得非常臃肿。 显然可以创建另一个函数来处理锁定/解锁,但它更好,不是吗?

可以用 C++11 标准库吗?

最佳答案

是的,您可以使用 std::lock_guard包装一个互斥体。

{
   std::lock_guard<std::mutex> lock(your_mutex);

    if (_someBool)
        return;

    DoStuff();

}

关于c++ - 具有作用域/代码块的互斥锁/锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246142/

相关文章:

c++ - c++中的模糊函数

c++ - 在 C++ 线程内实现多个计时器的最安全方法

.net - Socket ReceiveFromAsync 是隐式多线程的吗?

c++ - vc6移植到vc2005/vc2008的优势?

c++ - 如何修复 g++ 内存范围重叠?

c++ - 什么是对象切片?

c# - 防止在 AppDomain 中创建线程

c++ - 我们可以在 constexpr 函数中省略局部变量的 const 吗?

c++ - 三元运算符在 `int` 和 `float` 上的结果

c++ - 为什么值返回的对象和方法内部的对象有相同的地址?