深入应用C++11 笔记---互斥量 (七)

本文详细介绍了C++11中的互斥量,包括std::mutex的独占锁定,std::recursive_mutex的递归特性,以及std::timed_mutex和std::recursive_timed_mutex的超时功能。强调了递归锁的使用注意事项和潜在问题,以及超时互斥量在避免无限等待上的作用。
摘要由CSDN通过智能技术生成

深入应用C++11 笔记—互斥量 (七)

互斥量

互斥量是一种同步原语,是一种线程同步的手段,用来保护多线程同时访问共享数据。C++11中提供如下4种语义的互斥量(mutex):

  • std::mutex:独占的互斥量,不能递归使用
  • std::timed_ mutex:带超时的独占互斥量,不能递归使用
  • std::recursive_mutex:递归互斥量,不带超时功能
  • std::recursive_timed_mutex:带超时的递归互斥量
1.1 独占互斥量std::mutex

​ 一般是通过lock()方法来阻塞线程直到获得互斥量的所有权为止,当线程获得互斥量并完成任务之后,必须使用unlock()解除对互斥量的占用try_lock()尝试锁定互斥量,如果成功则返回true,否则返回false,它是非阻塞的。

//std::mutex基本用法
#include<iostream>
#include<thread>
#include<mutex>
#include<chrono>

std::mutex g_lock;
void func()
{
    g_lock.lock();//lock
    std::cout<<"entered thread  "<<std::this_thread::get_id()<<std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(1));
    std::cout<<"leaving thread  "<<std::this_thread::get_id()<<std
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值