C++互斥锁
C++11提供了4种锁机制
mutex: 互斥锁
timed_mutex:带超时机制的互斥锁
recursive_mutex:递归互斥锁
recursive_imed_mutex:带超时机制的递归互斥锁
!使用前需添加头文件#include <mutex>
metex:
使用伪代码方式
mutex mtx;
mtx.lock(); // 申请加锁。
(需要加锁的资源)
mtx.unlock(); //申请解锁
recursive_mutex:递归互斥锁允许同一线程多次获得互斥锁,可以解决同一线程多次加锁造成的死锁问题
recursive_mutex mtx
mtx.lock(); // 申请加锁。
(需要加锁的资源)
mtx.unlock(); //申请解锁
lock_guard类 lock_guard采用了RAII思想(在类构造函数中分配资源,在析构函数中释放资源,保证资源在离开作用域时自动释放)
mutex mtx;
lock_guard<mutex> mo(mtx); // 申请加锁。
(需要加锁的资源)