lock_guard:创建时加锁,析构时解锁。
作用:为了防止在线程使用mutex加锁后异常退出导致死锁的问题,建议使用lock_guard代替mutex。
lock_guard的构造函数:
explicit lock_guard (mutex_type& m);
test.cpp代码如下👇
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
int test_num = 0;
void testFunc(mutex& m)
{
for(int i = 0; i < 100; ++i)
{
lock_guard<mutex> l(m);
test_num++;
}
cout << this_thread::get_id() << ":" << test_num << endl;
}
int main(){
mutex m;
thread t1(testFunc, ref(m));
thread t2(testFunc, ref(m));
t1.join();
t2.join();
cout<<test_num<<endl;
return 0;
}
编译:g++ test.cpp -o test -lpthread
运行:./test
结果:
140160548558592:200
140160540165888:200
200