详解多线程中的互斥量;mutex头文件,lock与unlock ,lock_guard,unique_lock

2023-11-13

互斥量== 假如你有一张水卡,要放在卡槽才能出水,现在你和小明都要热水,于是你接一下热水(用自己的水卡),他又接一下热水,巧了,两人都接到泡面的热水。

互斥量是在Mutex的头文件中;

(并发的优点,可以极的减少时间,并且能够多个进程的运行东西;

 (并发的缺点: 将代码复杂了。会消耗更多的系统资源。对于硬件的要求较高;

}

lock与unlock 的使用;上锁与解锁;

 mutex mut;/// 给定一个对象;

 对一个没有lock的对象进行unlock是未进行定义的结果;unlock的出现必须要有lock的锁定‘

对于死锁;的理解,你有一个扣,小明有一个扣,小明说你打开扣我才能打开,你又说你打开我才能打开;

计两个人多没办法进行打开;

mutex o;
    mutex l;
    l.lock();
    cout << "woxinahbg " << endl;
    o.lock();
    for (int i = 0; i < 4; i++) {
        cout << "wo yao kia shi jie suo le " << endl;
        l.unlock();
    }
    o.unlock();

 这样的编程代码是有bug的;

lock_guard()的用法;

每一次我们都要用lock = unlock 的这样的函数; 一旦忘记了解锁就会报错;那么救星来了;

 lock_ground ;

理解lock_ground = lock +unlock 的用发;并自动进行解锁与枷锁;

 lock_ground 的解开过程;至少在析构函数。

 mutex mlock;//互斥量
  // lock_guard<mutex> lg(mlock);

    const char* g = " ia m vjsi n";
    while (*g != '\0') {
        mlock.lock();
        cout << *g;
        g++;
        this_thread::sleep_for(chrono::seconds(1));
         //seconds 是秒;
        mlock.unlock();   
     }

 lock_ground 的生存期是包括在我们 所写的unlock 与lock的范围;

 关于unique_lock的详解;

一 : 我们常用lock_ground来进行替换unique_lock 。可以的,应为unique_lock 的内存大于lovk_ground效率也小于他;

 两个函数;

mutex l;

 std ::unique_lock <std::mutex >sbugir(l,std::try_lock );

尝试去拿锁;

常用if搭;

 if(sbugir.try_lock()){
 //拿到了;

 }else {
 //否者}
 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解多线程中的互斥量;mutex头文件,lock与unlock ,lock_guard,unique_lock 的相关文章

随机推荐

  • MySQL——模糊查询(LIKE关键字与通配符:百分号%和下划线_的使用和理解)——(运用场景+通俗易懂)

    使用mysql模糊查询主要点 LIKE关键字和这两个通配符配合使用 任意一个字符 任意0或多个字符 那么我们立即上手吧 一 使用LIKE和通配符 场景1 我要搜索一个名字 可我都忘记叫什么了 只知道是3个字符的 那怎么搜索呢 三个下划线 代
  • elasticsearch7.9 修改指定JDK

    错误 future versions of Elasticsearch will require Java 11 your Java version from usr local nlp java jdk1 8 0 162 jre does
  • 大致解决 Ubuntu 18.04 系统启动极慢的问题

    早在一两个月之前就想升级到 18 04 或是 18 10 了 然而那会儿用 LiveCD 测试得速度实在是慢 启动要很久 干脆没过多纠缠 旧暂时不管了 现因实际需要 不得不升级系统 以便获取到更新的软件包 从 17 10 向上升级很方便 直
  • hdoj 题目分类

    1001 整数求和 水题 1002 C语言实验题 两个数比较 水题 1003 1 2 3 4 5 简单题 1004 渊子赛马 排序 贪心的方法归并 1005 Hero In Maze 广度搜索 1006 Redraiment猜想 数论 容斥
  • 论文笔记——CVPR 2017 Annotating Object Instances with a Polygon-RNN

    文章主页 http www cs toronto edu polyrnn 1 简介 文章作者基于深度学习提出一种半自动目标事例标注 semi automatic annotation of object instances 的算法 大多数前
  • @property基本概念

    1 什么是 property property是编译器的指令 什么是编译器的指令 编译器指令就是用来告诉编译器要做什么 property会让编译器做什么呢 property 用在声明文件中告诉编译器声明成员变量的的访问器 getter se
  • maven自定义archetype

    在开发过程中我们经常会创建一系列结构类似的新项目 这些项目结构和基础配置基本或完全一致 maven就提供了archetype类型来规定新建项目的结构及基础配置 利用archetype就可以快速简单的搭建新项目 一 创建Maven项目的一般步
  • 网络安全笔记7——防火墙技术

    网络安全笔记7 防火墙技术 参考课程 中国大学MOOC 网络安全 北京航空航天大学 文章目录 网络安全笔记7 防火墙技术 防火墙概述 防火墙的类型及结构 防火墙的发展史 防火墙的分类 OSI模型与防火墙的关系 静态包过滤防火墙 操作 工作原
  • es的配置文件(elasticsearch.yml)

    config目录下有2个配置文件 es的配置文件 elasticsearch yml 和日志配置文件 logging yml cluster name elasticsearch 配置es的集群名称 默认是elasticsearch es会
  • arduino IDE搭建ESP8266开发环境和简单使用

    arduino IDE搭建ESP8266开发环境和简单使用 文章目录 arduino IDE搭建ESP8266开发环境和简单使用 安装 下载IDE 在Arduino IDE上安装esp8266库 下载安装esp8266库 使用 选择开发板
  • Java进阶3 - 易错知识点整理(待更新)

    Java进阶3 易错知识点整理 待更新 该章节是Java进阶2 易错知识点整理的续篇 在前一章节中介绍了 ORM框架 中间件相关的面试题 而在该章节中主要记录关于项目部署中间件 监控与性能优化等常见面试题 文章目录 Java进阶3 易错知识
  • 使用mybatis-plus的insert方法遇到的坑(添加时id值不存在异常)

    在使用mybatis plus的insert方法的时候 报错 java sql SQLException Field id doesn t have a default value 后来了解到使用mybatis plus的insert方法
  • 05-2_Qt 5.9 C++开发指南_Model/View结构实例(QFileSystemModel、QStringListModel、QStandardItemModel;编程实例)

    接上篇 本篇主要介绍Model View框架下的模型类 QFileSystemModel QStringListModel QStandardItemModel的使用方法和编程实例 文章目录 1 QFileSystemModel 1 1 Q
  • 「拓数派(OpenPie)2022 发布会实录 」PieCloudDB Database 优化器

    10 月 24 日程序员节 拓数派 Openpie 发布了云原生数据库 PieCloudDB PieCloudDB 以云计算架构为设计基础 实现云上存算分离 打造了 元数据 计算 存储 分离三层架构 在计算层 PieCloudDB 设计了高
  • Microsoft Store 微软商店无法加载在页面解决

    导致此原因主要是因为你的电脑开启过vpn 开启了系统代理 导致微软商店无法加载 解决方法 1 第一步 开始 设置 2 第二步 网络和internet 3 第三步 点击代理 关闭手动代理服务器这一项 然后再打开微软商店 就可以了
  • Dvwa页面标红问题的逐步攻破(二)

    提示 第二个问题花了很长时间 试了很多种办法 都没成功 但是经过后续的操作我发现第二个问题并没有太大的影响 那就说一下在此过程中遇到的问题及解决吧 解决PHP module gd MIssing Only an issue if you w
  • HTML超链接标签

    一 超链接标签 a 的语法 a href 链接路径 target self 链接文本或图像 a 1 a 标签中href属性值是链接的路径 当href 时表示一个空连接 2 a 标签中target属性值表示的是链接在哪个窗口打开 它的常用值是
  • rlwrap

    rlwrap for Command Line History and Editing in SQL Plus and RMAN on Linux linux下安装后 用着确实方便 AIX下能用吗 more http www oracle
  • 【语义分割】13、SegNeXt

    文章目录 一 背景 二 方法 2 1 Convolutional Encoder 2 2 Decoder 三 效果 论文 SegNeXt Rethinking Convolutional Attention Design for Seman
  • 详解多线程中的互斥量;mutex头文件,lock与unlock ,lock_guard,unique_lock

    互斥量 假如你有一张水卡 要放在卡槽才能出水 现在你和小明都要热水 于是你接一下热水 用自己的水卡 他又接一下热水 巧了 两人都接到泡面的热水 互斥量是在Mutex的头文件中 并发的优点 可以极的减少时间 并且能够多个进程的运行东西 并发的