C++ std::lock_guard 自动加锁释放锁 原理

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ std::lock_guard 自动加锁释放锁 原理相关的知识,希望对你有一定的参考价值。

概述
根据对象的析构函数自动调用的原理,c++11推出了std::lock_guard自动释放锁,其原理是:声明一个局部的lock_guard对象,在其构造函数中进行加锁,在其析构函数中进行解锁。最终的结果就是:在定义该局部对象的时候加锁(调用构造函数),出了该对象作用域的时候解锁(调用析构函数)。

使用方法
首先需要包含mutex头文件
然后创建一个锁 std::mutex mutex
在需要被加锁的作用域内 将mutex传入到创建的std::lock_guard局部对象中

#include <mutex>	/*std::mutex、 std::lock_guard*/

std::mutex mutex;  
void func() 
{
	std::lock_guard<std::mutex> lock(mutex);
    //函数内容
}


————————————————
版权声明:本文为CSDN博主「Markus.Zhao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MakerCloud/article/details/96846921

以上是关于C++ std::lock_guard 自动加锁释放锁 原理的主要内容,如果未能解决你的问题,请参考以下文章

基于std::mutex std::lock_guard std::condition_variable 和std::async实现的简单同步队列

linux C++互斥锁std::lock_guard(轻锁)std::unique_lock(重锁)区别

linux C++互斥锁std::lock_guard(轻锁)std::unique_lock(重锁)区别

c++ 如何将 std::mutex 和 std::lock_guard 与仿函数一起使用?

C++ lock_guard 与 mutex.lock()

stdthread并发unique_lock