C++ lock_guard 互斥锁

摘要:
概述根据自动调用对象析构函数的原理,c++11引入了std::lock_通过保护自动释放锁的原理是:声明一个本地锁_保护对象在其构造函数中被锁定,在其析构函数中被解锁。方法1.首先包含互斥体头文件。2.然后创建一个锁std::mutexmutex。3.将互斥体传递到要锁定的作用域中创建的std::lock中_1#include/*std::mutex,std::lock_guard*/23std::互斥体;45void func()6{7//lock_guard互斥锁作用域8中的不可复制结构{9std::lock_guard<std::mutex>lg;10//函数内容11}12}

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

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

 1 #include <mutex>    /*std::mutex、 std::lock_guard*/
 2  
 3 std::mutex mutex;  
 4 
 5 void func() 
 6 {
 7      //lock_guard 互斥锁 作用域内不可拷贝构造
 8      {
 9          std::lock_guard<std::mutex> lg(m_mutex);
10          //函数内容
11      }
12 }

免责声明:文章转载自《C++ lock_guard 互斥锁》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解读Python内存管理机制Mysql Select 语句中实现的判断下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

来讲讲C#中的类

1、什么是类? 面向对象的语言,最基本的就是类。在C#中,类是这样来定义的:类代表一组具有公共属性和行为的对象。 举个例子,现实生活中,人就是一个“类”,但这只是一个统称,指所有的人。我们要找个人一起去玩,此时就需要找到一个具体的人。比如我和小红,我们两个就是“人”这个类的两个实例。 2、C#中如何定义一个类? C#中采用关键词class来定义。 clas...

10个精妙的Java编码最佳实践

这是一个比Josh Bloch的Effective Java规则更精妙的10条Java编码实践的列表。和Josh Bloch的列表容易学习并且关注日常情况相比,这个列表将包含涉及API/SPI设计中不常见的情况,可能有很大影响。 我在编写和维护jOOQ(Java中内部DSL建模的SQL)时遇到过这些。作为一个内部DSL,jOOQ最大限度的挑战了Java的编...

C#编程(七十四)----------释放非托管资源

释放非托管资源 在介绍释放非托管资源的时候,我觉得有必要先来认识一下啥叫非托管资源,既然有非托管资源,肯定有托管资源. 托管资源指的是.net可以自棕进行回收的资源,主要是指托管堆上分配的内存资源.托管资源的回收工作是不需要人工干预的,有.net运行库在合适的调用垃圾回收器进行回收. 非托管资源指的是.net不知道如何回收的资源,最常见的一类非托管资源是包...

Labview 中的类

一、创建一个空的类     在 LabVIEW 工程窗口里,鼠标右键菜单的新建栏中有一项,是创建类。类的结构和 LabVIEW 工程库是比较相近的:类的名字也作为名字空间;也可以为类中的 VI 设置访问权限等。类在硬盘上被保存在一个 .lvclass 文件中。这个文件其实是一个XML格式的文本文件,它的格式与 .lvlib 类似。    类是一个抽象的定义...

C++异常

一、什么是异常处理         一句话:异常处理就是处理程序中的错误。 二、为什么需要异常处理,以及异常处理的基本思想         C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一...

浅谈C#托管程序中的资源释放问题

终于开始动手写这篇文章了,有个网友催了我好几次,而我要么因为手头有事,要么就是被其他思路给叉开,以至这篇文章拖了好久还没开始写,今天终于可以静下心来完成它。   用了.net工具来写程序的人,不难发现它有个好处,就是使用的内存不用释放,尤其在使用C#或者VB.Net来写程序,因为程序所占用的内存都是受系统托管的,因此内存的释放不需要程序员去操心。   很多...