前言

std::mutex 是C++11 中最基本的互斥量,std::mutex 对象提供了独占所有权的特性——即不支持递归地对 std::mutex 对象上锁,而 std::recursive_lock 则可以递归地对互斥量对象上锁

代码例子

头文件

#include <mutex>

std::mutex mutexTest;

mutexTest.lock();
//do something
mutexTest.unlock();

 std::lock_guard,与 Mutex RAII 相关,方便线程对互斥量上锁。

lock_guard 类是一个mutex封装者,它为了拥有一个或多个mutex而提供了一种方便的 RAII style 机制。( 译注:所谓的RAII,全称为Resource Acquisition Is Initialization,汉语是“资源获取即初始化”。但是这个直译并没有很好地解释这个词组的含义。其实含义并不高深复杂,简单说来就是,在资源获取的时候将其封装在某类的object中,利用"栈资源会在相应object的生命周期结束时自动销毁"来自动释放资源,即,将资源释放写在析构函数中。所以这个RAII其实就是和智能指针的实现是类似的。)

std::mutex mutexTest;
void Test()
{
  std::lock_guard<std::mutex> lock(mutexTest);
  //do something
}