一、互斥量(mutex)的基本概念
- 互斥量就是个类对象,可以理解为一把锁,多个线程尝试用lock()成员函数来加锁,只有一个线程能锁定成功,如果没有锁成功,那么流程将卡在lock()这里不断尝试去锁定。
- 互斥量使用要小心,保护数据不多也不少,少了达不到效果,多了影响效率。
二、互斥量的用法
2.1 lock(),unlock()
- 添加头文件:
#include<mutex>
- 声明与创建:
std::mutex my_mutex;
- 先
lock()
—>操作共享数据—>unlock()
(这类错误很难排查)
lock()
和unlock()
务必要成对使用
//函数void inMsgRecvQueue()加锁片段:
my_mutex.lock();
msgRecvQueue.push_back(i);
my_mutex.unlock();
//函数outMsgLULProc(int& command)加锁片段:
my_mutex.lock();
if (!msgRecvQueue.empty())
{
//命令队列不为空
int command = msgRecvQueue.front();//得到第一条命令
msgRecvQueue.pop_front