mutex my_mutex;
my_mutex.lock();
my_mutex.unlock();
互斥量的加锁与解锁
为了防止有的时候加锁后忘记解锁,可以使用lock_guard
void func()
{
mutex my_mutex;
lock_guard<mutex> lg(my_mutex);
.....
}
当lock_guard对象离开作用域后,运行析构函数,自动解锁。
如何实现死锁:两个进程,以不同顺序加锁两个互斥量。
如果要实现一起加锁两个互斥量,且只要其中一个没有加锁成功,则是释放掉另一个锁,可以使用std::lock(mutex m1,mutex m2....)