首页 > 编程语言 >C++互斥锁

C++互斥锁

时间:2023-08-12 20:45:01浏览次数:35  
标签:mtx 加锁 recursive lock C++ 互斥 mutex

C++11提供了4种锁机制
mutex: 互斥锁
timed_mutex:带超时机制的互斥锁
recursive_mutex:递归互斥锁
recursive_imed_mutex:带超时机制的递归互斥锁
!使用前需添加头文件#include <mutex>

metex:
使用伪代码方式
mutex mtx;
mtx.lock(); // 申请加锁。
(需要加锁的资源)
mtx.unlock(); //申请解锁

recursive_mutex:递归互斥锁允许同一线程多次获得互斥锁,可以解决同一线程多次加锁造成的死锁问题
recursive_mutex mtx
mtx.lock(); // 申请加锁。
(需要加锁的资源)
mtx.unlock(); //申请解锁

lock_guard类 lock_guard采用了RAII思想(在类构造函数中分配资源,在析构函数中释放资源,保证资源在离开作用域时自动释放)
mutex mtx;
lock_guard<mutex> mo(mtx); // 申请加锁。
(需要加锁的资源)

标签:mtx,加锁,recursive,lock,C++,互斥,mutex
From: https://www.cnblogs.com/longhe/p/17625456.html

相关文章

  • C++通用学习速成判定
    C++的继承【C++】继承_c++继承_风继续吹TT的博客-CSDN博客#include<iostream>#include<string>usingnamespacestd;classPerson{public: voidPrint() { cout<<"_name_age_sex"<<endl; }protected: string_name; int_age; char......
  • C C++ Java python HTML/CSS/JavaScript
    C/C++是一种底层的语言,它可以直接操作内存和硬件,运行速度很快,但是也很难学习和调试,容易出错。Java是一种面向对象的语言,它可以跨平台运行,有很多成熟的框架和库,适合做大型的企业级应用,但是也很繁琐和冗长,需要写很多代码。Python是一种高级的语言,它可以用简洁的语法来实现复杂的功能......
  • C++系列三:QT初识
    目录前言QT介绍前言开发环境,挺折腾人,一波三折。参考链接:C语言中文网、QT快速入门官方文档QT介绍跨平台的GUI。主要用于桌面程序开发和嵌入式开发。目前Qt的开源授权有两种,一种是GPL授权,另一种是LGPL授权QML主要用于手机移动应用程序Windows下的GUI解决方案......
  • C++系列二:STL教程-迭代器
    目录前言迭代器前言……。迭代器//它可以是需要的任意类型,通过迭代器可以指向容器中的某个元素,如果需要,还可以对该元素进行读/写操作。常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器5种。输入迭代器和输出迭代器比较特殊,它......
  • 浅析C++gnu pbds库
    pbds俗称平板电视,__gnu_pbds自带了封装好了的平衡树、字典树、hash数据结构,速度快过\(STL\)Ⅰ.引入想要使用\(pbds\),必须先要添加头文件,\(pbds\)并不属于bits/stdc++.h的一部分,所以也只能在\(g++\Mingw64\)的环境下食用。以下是头文件:#include<bits/extc++.h>以下是命名空......
  • RichEdit 选中文本的高亮显示 VC++
    RichEdit控件失去焦点后,选中文本不再高亮显示。有两种方法可以改变,使得控件失去焦点仍然保持高亮:方法一:创建控件时设置ES_NOHIDESEL风格m_hWndREdit=CreateWindow(_T("RichEdit20W"),NULL,//RICHEDIT_CLASSRichEdit20ARichEdit20WWS_CHILD|WS_VISIBLE|ES......
  • C++实现一键关闭桌面
    方法一:C++关闭桌面,explorer.exe#include<Windows.h>#include<TlHelp32.h>#include"resource.h"#pragmawarning(disable:4996)voidtaskkill(constchar*name){ HANDLEinfo_handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//拍摄系统中所有进......
  • c++11特性汇总
    c++11/14/17新特性参考C++11系列-什么是C++11大丙教程目录1、关键字及新语法1.1、auto关键字及用法1.2、nullptr关键字及用法1.3、for循环语法2、智能指针内存管理2.1、std::shared_ptr2.2、std::weak_ptr2.3、std::unique_ptr3、文件IO3.1、标准......
  • C++快速排序
    快速排序介绍:基础思路:首先快速排序是由冒泡排序所改进的,都是通过多次比较和交换来实现排序,但快速排序是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,分别对这两部分记录继续进行排序,以达到整个序列有序。思路详解:(1)首先我们先设定......
  • [转]c++ function使用方法
    原帖:https://blog.csdn.net/myRealization/article/details/111189651 cppreference https://en.cppreference.com/w/cpp/utility/functional/functionboost源码剖析之:泛型函数指针类boost::functionhttps://blog.csdn.net/pongba/article/details/1560773c++模板偏特化 h......