一、unique_lock取代lock_guard
unique_lock是个类模板,工作中,一般lock_guard(推荐使用);
lock_guard取代了mutex的lock()和unlock()
unique_lock比lock_guard灵活很多;但是效率差一点,内存占用多一点。
使用方法简单,修改上次的代码:
void inMsgRecvQueue() { for (int i = 0; i < 100000; ++i) { cout << "inMsgRecvQueue()执行,插入一个元素" << i << endl; std::unique_lock<std::mutex> sbguard1(my_mutex1); msgRecvQueue.push_back(i); } return; }
完整代码如下:
#include <iostream>
#include <thread>
#include <vector>
#include <list>
#include <mutex>
using namespace std;
class A {
public:
// 收集数据的函数
void inMsgRecvQueue()
{
for (int i = 0; i < 100000; ++i)
{
cout <&