概念说明:
std::mutex
互斥量或锁,是一个用于保护共享数据不会同时被多个线程访问的类;
互斥量或锁:
是用来保护共享资源(变量或者代码)不被并发访问的一种方法,它只是方法,实际的实现就是 std::mutex
等类;
使用说明:
1.手动操作锁:
#include <mutex>
std::mutex mutex;//必须是全局的变量
void MutexTest()
{
//在数据访问前,加锁
mutex.lock();
//do something that is thread safe...
//在数据访问后或离开作用域解锁
mutex.unlock();
}
2.利用std::lock_guard自动操作锁:
std::lock_guard 是一个互斥量的包装类,用来提供自动为互斥量上锁和解锁的功能。
#include <mutex>
std::mutex mutex;//必须是全局的变量
void MutexTest()
{
// 在数据访问前
//构造时自动加锁
std::lock_guard<std::mutex>(mutex);
//do something that is thread safe...
// 离开局部作用域,析构函数自动完成解锁功能
}
//std::lock_guard实现原理参考:
template<ty