C/C++教程

C++基础-lock_guard和unique_lock

本文主要是介绍C++基础-lock_guard和unique_lock,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

lock_guard(自动加锁, 自动解锁, 读取失败就一直等待)

lock_guard<mutex> lgd(g_mutex);

unique_lock(自动加锁, 自动解锁, 根据块语句锁定)

unique_lock<mutex> ulk(g_mutex);

完整代码

#include<thread>
#include<iostream>
#include<mutex>

using namespace std;

#define N 10000000
mutex g_mutex;

void add(int *p)
{
    for(int i = 0; i < N; i++)
    {
        //自动加锁, 自动解锁, 根据块语句锁定
        unique_lock<mutex> ulk(g_mutex);
        //根据Mutex属性, 是否可以加锁

        //lock_guard<mutex> lgd(g_mutex); //
        //自动加锁自动解锁
        //读取失败的情况就一直等待
        (*p)++;
    }
}


int main()
{
    int a = 0;
    thread t1(add, &a);
    thread t2(add, &a);
    t1.join();
    t2.join();
    std::cout << a << std::endl;
    cin.get();
}

 

这篇关于C++基础-lock_guard和unique_lock的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!