C++互斥量、lock_guard类模板及死锁实例分析
导读:本文共2329.5字符,通常情况下阅读需要8分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 互斥量的基本概念互斥量是个类对象,理解成一把锁,多个线程尝试使用lock()成员函数来枷锁这个锁,是有一个线程可以锁成功,成功的标志是返回如果没有锁成功,那么流程卡在lock这里不断尝试去锁互斥量的使用#include<iostream>#include<string>#include<thread>#include&l... ...
目录
(为您整理了一些要点),点击可以直达。互斥量是个类对象,理解成一把锁,多个线程尝试使用lock()成员函数来枷锁这个锁,是有一个线程可以锁成功,成功的标志是返回
如果没有锁成功,那么流程卡在lock这里不断尝试去锁
为什么此处只有一句 lock_guard sbguard(my_mutex);函数即可 不出问题
lock_guard原理:
lock_guard创建 sbguard(my_mutex);对象,会有构造函数,在构造函数中进行了my_mutex.lock
在函数执行结束后,局部对象会释放,执行析构函数的时候会执行my_mutex.unlock
死锁的条件:
两个线程同时 锁住 两把锁, A线程先锁 锁1,后锁 锁2;B线程先锁 锁2,后锁 锁1,就会发生死锁
防止死锁的条件:
两个锁的 锁的顺序必须相同
lock(mutex1, mutex2);
lock_guard sbguard1(my_mutex1,adopt_lock);’
C++互斥量、lock_guard类模板及死锁实例分析的详细内容,希望对您有所帮助,信息来源于网络。