#define N 1000000
mutex g_mutex;
void add(int *p)
{
for (int i = 0; i < N; i++)
{
unique_lock<mutex>ulk(g_mutex);//OK unique_lock 加锁,没有mutex所有的权限(根据mutex的属性来判断是否能够加锁, 自动加锁自动解锁) 时间上比lock_guard 慢
//根据块语句的循环 来锁定 读取失败就一直等待
//lock_guard < mutex >lgd(g_mutex) ;//OK 锁定的向导 拥有mutex所有的权限 自动加锁自动解锁(浪费时间) 一旦读取失败,就一直等待
(*p)++;
}
}
void main()
{
int a = 0;
thread t1(add, &a);
thread t2(add, &a);
t1.join();
t2.join();
cout << a << endl;
cin.get();
}
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接