//保护共享数据,操作时,某个线程 需要用代码把共享数据锁住、操作数据、解锁,其它想操作共享数据的线程必须等待解锁,然后才能锁定、操作,解锁。
一,互斥量的基本概念
互斥量是一个类对象。理解成一把锁,多个线程尝试用lock成员函数来加锁这把锁头,只有一个线程能锁定成功,
对于没有锁定成功的线程,流程卡在lock这里不断的尝试加锁这把锁头。
//互斥量使用要小心,保护数据不多也不少,保护的少了,每达到保护效果,保护的内容多了,影响效率。
二,互斥量的使用
2.1 lock与unlock
步骤:先lock,再操作共享数据,最后,unlock
lock与unlock要成对出现,每调用一次lock,必须要调用一次unlock。
为了防止大家忘记unlock,引入了一个std::lock_guard的类模板
2.2 std::lock_guard类模板
需要一个std::mutex来构造一个lock_guard对象,构造lock_guard对象时,mutex锁定,析构lockguard对象时,mutex解锁。