一、概要
unique_lock实现了lock_guard类似的功能,但unique_lock保证了只有一个unique_lock拥有mutex,同时提供了转移拥有权的接口。
二、代码示例
#pragma once
#include <mutex>
#include <thread>
#include <iostream>
using namespace std;
class UniqueLockTest
{
private:
mutex _mutex;
int count;
public:
void process()
{
for (int i = 0; i < 10000; i++)
{
unique_lock<mutex> lock1(_mutex);
//lock1.lock(); //unique_lock构造的时候已经lock了,再lock就死锁了
count++;
}
}
void doTest()
{
thread t1([this]() {
this->process(); });
thread t2([this]() {
this->process(); });
t1.join()