概述

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

使用方法

  1. 首先需要包含mutex头文件
  2. 然后创建一个锁 std::mutex mutex
  3. 在需要被加锁的作用域内 将mutex传入到创建的std::lock_guard局部对象中
#include <mutex>   /*std::mutex、 std::lock_guard*/std::mutex mutex;
void func()
{std::lock_guard<std::mutex> lock(mutex);//函数内容
}

C++ lock_guard 自动释放锁相关推荐

  1. java线程释放_Java多线程出现异常会自动释放锁

    Java多线程出现异常会自动释放锁 package com.wkcto.intrinsiclock; /** * 同步过程中线程出现异常, 会自动释放锁对象 * * Author: 老崔 */ pub ...

  2. 【代码】使用reentrantlock必须要手动释放锁

    使用reentrantlock必须要手动释放锁 import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock ...

  3. yield方法释放锁吗_死磕Synchronized底层实现重量级锁

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:farmerjohngit 链接:https://github.com/farmer ...

  4. 为什么await()后会执行lock.unlock,await()时不就释放锁了吗

    为什么await()后会执行lock.unlock,await()时不就释放锁了吗 1 是的,释放锁是为了别的线程获得,是为了线程间的通信,是临时释放的,真正满足继续向下执行条件后,被唤醒后获得了锁, ...

  5. Redis实现分布式锁释放锁

    package com.learn;//什么线程安全问题 在同一个jvm中,多个线程共享同一个全局变量做写的操作的时候,可能会收到其他线程的干扰. class ThreadDemo implement ...

  6. java wait 释放_Java:wait()从同步块释放锁

    "在同步方法内调用等待是获取内在锁的简单方法" 这句话是假的,它是文档中的错误. 当线程进入同步方法时,它会获取固有锁. 同步方法中的线程被设置为锁的所有者并且处于RUNNABLE ...

  7. thread.sleep会释放锁吗_面试 LockSupport.park()会释放锁资源吗?

    (手机横屏看源码更方便) 引子 大家知道,我最近在招人,今天遇到个同学,他的源码看过一些,然后我就开始了AQS连环问. 我:说说AQS的大致流程? 他:AQS包含一个状态变量,一个同步队列--bala ...

  8. ReentrantLock加锁(lock())、释放锁(unlock())的实现

    一.简介 ReentrantLock是JUC包下比较重要同样也是比较常用的一个类,从类名可以看出它的功能:Lock是锁,reentrant可重入,可重入锁.在功能上ReentrantLock和sync ...

  9. P576线程P582多线程P583startP584Runnable创建线程P58子线程应用P587退出P588方法P591守护线程P592线程7大状态P593同步P594互斥锁P596释放锁P598

    576线程-P598作业2 P576线程 P582多线程机制 public class Thread01 {public static void main(String[] args) {//创建Ca ...

最新文章

  1. Windows窗口风格
  2. c运行库、c标准库、windows API都是什么玩意
  3. 前端“黑话”polyfill
  4. python代码怎么变成软件_Python变成技术
  5. laravel的路由分组,中间件,命名空间,子域名,路由前缀(四)
  6. django使用mysql 好处_Django使用MySQL
  7. 基于SDN的环路通信
  8. 51 单片机 建立 文本文件_笔记系列之单片机原理及应用1
  9. clear java_方法clear()在Java中做什么?
  10. [linux kernel] 内核下RX8025对接系统时钟
  11. python简说(二)list
  12. 大数据背景下网络舆情监督机制的研究(非原创)
  13. android设置管理员权限设置,android 获取超级管理员权限,进行锁屏、恢复出厂设置...
  14. Win11找不到xinput1_3.dll怎么办?
  15. 西方妖怪大百科(上)
  16. 十一则:程序员冷“笑话”据说只有真正的程序员才看得懂
  17. 【Windows MTU】Windows上最大传输单元MTU值的查看和设置
  18. 牛逼!这届WWDC依旧展现了那个让你无法复制的苹果!
  19. 物联网实战项目 免费领取!手把手教你如何从0搭建智慧家居中的视频监控系统
  20. 计算机专业cad 办公 ps,厦门集美办公、商务办公、CAD、PS、平面设计培训

热门文章

  1. 微信支付V3版 java
  2. 38岁女儿不恋爱没有稳定工作老母亲愁哭
  3. 好女人是一所学校- -
  4. [转] 一个女生写给男朋友的!!!~~有点现实、冷静的语言,却让人感觉很温暖!!!
  5. java/php/net/python守望先锋网站设计
  6. Datawhale打卡活动 Kaggle Spaceship Titanic Day3
  7. 网线有网,路由器连接之后没网,解决办法
  8. ttyS 和 ttyO 的区别
  9. OPENWRT 修改串口(ttyS*)笔记
  10. 如何让centos7串口数(ttyS*)大于4个