首页 > 编程语言 >C++11 lock_guard和unique_lock

C++11 lock_guard和unique_lock

时间:2024-12-12 13:33:24浏览次数:8  
标签:11 lock 解锁 guard RAII unique 资源

一、RAII技术
1、 Resource Acquisition Is Initialization,资源获取即初始化,由C++之父提出。

2、 使用局部对象来管理资源的技术,称为资源获取即初始化。

3、 资源主要指操作系统中有限的东西,如内存、套接字等;局部对象指存储在栈里的对象,生命周期由操作系统来管理。

4、 资源使用一般分3个步骤,a、获取资源; b、使用资源; c、销毁资源,但程序员经常忘记销毁资源,所以RAII技术常用于管理资源,避免内存泄露。

5、 RAII过程:
(1)、设计一个类封装资源;
(2)、在构造函数中初始化资源;
(3)、在析构函数中销毁资源;
(4)、使用资源时定义一个该类的对象。

6、 C++11中unique_lock和lock_guard就是运用了RAII技术。

二、lock_guard和unique_lock
1、 程序员在用互斥量mutex的lock()和unlock()时,经常忘记unlock(),导致线程死锁。

2、 lock_guard和unique_lock在构造时自动锁定互斥量,在退出作用域后进行析构时自动解锁互斥量。

3、 lock_guard和unique_lock的区别:
(1)、unique_lock支持临时解锁和再上锁,如定义对象std::unique_lockstd::mutex locker(mtx);后,使用locker.unlock()可以正常解锁,再用locker.lock()进行上锁,不必等到析构时解锁。
(2)、lock_guard不支持手动解锁和上锁,只能在构造时上锁,在析构时解锁。
(3)、unique_lock比lock_guard付出更多时间、性能成本。

标签:11,lock,解锁,guard,RAII,unique,资源
From: https://blog.csdn.net/weixin_44629261/article/details/144424284

相关文章

  • Windows 7 8 8.1 10 11 相关 设置
    ControlPanel(Default)control  -ControlPanel(categoryview)shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}-ControlPanel(iconview)shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}-ControlPanelAllTasks(GodMode):shell:::{ED7BA470-8E54-465......
  • 解决Gradle报错:only buildscript {} and other plugins {} script blocks are allowed
    解决Gradle报错:onlybuildscript{}andotherplugins{}scriptblocksareallowedbeforeplugins{}blocksTag:Gradle,plugins,buildscript,Gradle报错,ExtractVariable,build.gradle问题描述在使用Gradle配置项目时,我遇到了一个让人困惑的错误提示:“onlyb......
  • 11.30
    网络安全C10-2024.11.30@所有人作业:CVE-2018-4878漏洞复现powershell-windowstylehidden-execbypass-c"IEX(New-ObjectNet.WebClient).DownloadString('http://10.0.0.164:80/magedu.ps1');test.ps1"实现WAF安装与配置3、WAF绕过SQL注入(1)分别在无WAF和有WAF的情况下,利用SQ......
  • 【2024年华为秋招-12月11日-第二题(200分)- 服务器训练任务调度】(题目+思路+Java&C++&Py
    题目内容团队申请了一组服务器,用于机器学习训练,为了充分利用资源,需要你来完成任务调度算法的实现。一台服务器同一时间只能执行一个训练任务,每个训练任务有训练时间和优先级。当空闲服务器不足时,优先执行高优先级的训练任务;如果多个训练任务的优先级相同,优先执行训练时......
  • 24.12.11学习总结
    今天写的题:一、题目描述据说 2012 的灾难和太阳黑子的爆发有关。于是地球防卫小队决定制造一个特殊防护伞,挡住太阳黑子爆发的区域,减少其对地球的影响。由于太阳相对于地球来说实在是太大了,我们可以把太阳表面看作一个平面,中心定为 (0,0)。根据情报,在 2012 年时,太阳表面......
  • ChatGPT 中文版国内镜像网站整理合集(2024/12/11)
    ​一、ChatGPT中文版国内镜像网站整理合集① yixiaai.com 支持4o以及o1,支持MJ绘画② chat.lify.vip 支持通用全模型,支持文件读取、插件、绘画、AIPPT③ AIChat 支持GPT3.5/4,4o以及MJ绘画④镜像站收集开源项目 收集各种可以的ChatGPT镜像网站,免费的收费的。支持4o以......
  • acwing 1141. 局域网
    某个局域网内有 nn 台计算机和 kk 条 双向 网线,计算机的编号是 1∼n1∼n。由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。注意:对于某一个连接,虽然它是双向的,但我们不将其当做......
  • 【网络协议基础+TCP协议】快速了解 TCP 连接的 11 种状态及其转换
    本文意在用简短的文字总结一下TCP的11种状态及其转换过程。相关文章:图解TCP连接生命周期TCP的11种状态1.CLOSED表示连接处于关闭状态。这是TCP连接的初始状态或连接终止后的状态。常见场景:服务端程序尚未启动监听,或者客户端和服务端都已完成连接释放。2.LI......
  • hhdb客户端介绍(11)
    前言范围根据数据库管理软件项目接口要求,完善规范化接口对接内容,结合本次项目的具体建设目标,对以后的第三方接口开发交互提供指导建议。开发人员功能实现:开发人员可以通过该说明书了解MySQL数据库客户端提供的接口功能,从而实现与数据库服务器的交互。代码编写:说明书中的接口......
  • odis工程师11安装教程
    ODIS工程师软件刷奥迪、大众等车型隐藏功能必须要用到的软件。ODIS官方版是一款专业的汽车诊断软件。ODIS官方版可以帮助汽车维修行业提供高效、精准的故障检测和维护服务。ODIS官方版支持多种品牌的汽车诊断包括大众、奥迪、斯柯达等,并集成了丰富的功能模块;包括故障码扫......