Thread lock_guard 和 unique_lock
来源:互联网 发布:域名到期如何续费 编辑:程序博客网 时间:2024/06/06 01:54
#include "stdafx.h"#include <iostream>#include <mutex>#include <thread>int i;std::mutex i_mutex;struct Box {explicit Box(int num) : num_things{ num } {}int num_things;std::mutex m;};void safe_increment(){std::lock_guard<std::mutex> lock(i_mutex);//加锁,一次只允许一条线程执行//std::unique_lock<std::mutex> lock(i_mutex, std::defer_lock);//lock.lock();std::cout << i << "\n";for (int j = 0; j < 100;++j)++i;}void funcUniqueLock(Box& b){std::unique_lock<std::mutex> lock(b.m,std::defer_lock);lock.lock();b.num_things++;std::cout << b.num_things << "\n";}int _tmain(int argc, _TCHAR* argv[]){// std::thread t1(safe_increment);// std::thread t2(safe_increment);// std::thread t3(safe_increment);// std::thread t4(safe_increment);Box b(1);std::thread t1(funcUniqueLock,std::ref(b));std::thread t2(funcUniqueLock,std::ref(b));std::thread t3(funcUniqueLock,std::ref(b));std::thread t4(funcUniqueLock,std::ref(b));b.num_things = 10;t1.join();t2.join();t3.join();t4.join();return 0;}
感觉lock_guid 和unique_lock差不多,为什么网上例子的unique_lock用对象锁 不用全局锁。
0 0
- Thread lock_guard 和 unique_lock
- lock_guard和unique_lock的区别
- 锁对象---lock_guard和unique_lock
- std::lock_guard 和 std::unique_lock的区别
- C++11中lock_guard和unique_lock的区别
- c++11的mutex unique_lock和lock_guard区别
- boost::unique_lock vs boost::lock_guard
- std::lock_guard and std::unique_lock
- std::lock_guard std::unique_lock 区别
- c++ 11 lock_guard/unique_lock详解
- c++ unique_lock与lock_guard的区别
- 线程自动加锁与自动解锁:lock_guard & unique_lock
- std::mutex std::unique_lock std::lock_guard std::recursive_mutex的理解
- C++11 std::unique_lock与std::lock_guard区别及多线程应用实例
- boost中shared_lock和unique_lock的区别
- std::mutex 和 std::lock_guard 小例子
- std::mutex 和 std::lock_guard 小例子
- RAII 想到AutoLock,Mutex类和C++11中的unique_lock
- Windows GDI+坐标系统详解(一)
- unity基础概念
- C-030.指针的定义和初始化
- myeclipse中tomcat配置步骤
- 01-Git简介
- Thread lock_guard 和 unique_lock
- 判断数组中是否有重复的数字(C++)
- 阻止浏览器冒泡事件,兼容firefox和ie
- RESTful WebService入门
- 【工具优化】Windows版Vim的优化设置
- Navicat Premium 11 数据库图形工具
- BitmapFactory.Options 解决加载大图片OOM
- UI基础2控件:UILabel,UIImageView
- 条款49中关于new-handler行为