mutex:互斥锁
自解锁:Lock_guard()
它是与mutex配合使用,把锁放到lock_guard中时,mutex自动上锁,lock_guard析构时,同时把mutex解锁。
Lock_guard()参考:https://blog.csdn.net/xiaoyafang123/article/details/54137611
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
unsigned long sum = 0L;
mutex mu;
void fun(size_t num)
{
lock_guard<mutex> lock(mu);
for (size_t i = 0; i < num; ++i)
sum++;
}
int main()
{
cout << "Before joining,sum = " << sum << std::endl;
thread t1(fun, 1000000);
thread t2(fun, 1000000);
t1.join();
t2.join();
cout << "After joining,sum = " << sum << std::endl;
return 0;
}