一、unique_lock的成员函数
1.1 lock()
一起验证defer_lock的效果,修改成员函数如下:
// 收集数据的函数
void inMsgRecvQueue()
{
for (int i = 0; i < 10000; ++i)
{
std::unique_lock<std::mutex> sbguard1(my_mutex1, std::defer_lock);//没有加锁的my_mutex1
sbguard1.lock(); //后续不用自己unlock()
cout << "inMsgRecvQueue()执行,插入一个元素" << i << endl;
// 拿到了锁
msgRecvQueue.push_back(i);
}
return;
}
完整代码如下:
#include <iostream>
#include <thread>
#include <vector>
#include <list>
#include <mutex>
#include<chrono>
using namespace std;
class A {
public:
// 收集数据的函数
void inMsgRecvQueue()
{
for (int i = 0; i < 10000; ++i)
{
std::unique_lock<std::mutex> sbgua