
C++11并发与多线程总结
主要记录一下自己的学习,方便查阅,很多函数使用方法只引出了概念,需要用到的时候再去深入查找文档
Rice__
走走停停
展开
-
C++11并发与多线程总结(九) -- 原子操作atomic简介
(1)简介若多个线程操作一个共享数据,而共享数据只是简单的操作,若使用锁来对其进行保护,效率十分低下引入原子操作,即不需要互斥量的多线程并发保护其使用方式类似于普通数据,多个线程对其操作的过程不会打断其完整的数据写入,即不会出现中间状态只针对单个变量,一般用于计数统计(2)使用方式1.模板类,定义后与变量使用方式一致2.不需要用到互斥量加锁的多线程并发模式3.其对数据的操作...原创 2020-03-26 20:54:41 · 517 阅读 · 0 评论 -
C++11并发与多线程总结(八) --packaged_task与promise
(1)packaged_task<>用于打包管理函数,可从中获取函数返回值可以打包lambda表达式,用法相同使用方式同普通函数直接调用可作为参数传入线程并用get_future获得返回值1.可用函数创建,也可用lamda表达式创建2.可用线程或直接调用,用法同函数3.放入容器中方便管理,push的时候需使用std::move变成右值 std::package...原创 2020-03-26 20:29:43 · 381 阅读 · 0 评论 -
C++11并发与多线程总结(七) -- std::async异步任务与std::future
(1)简介std::async一般与std::future< >配套使用,前者异步或同步调用一个函数,返回一个future的模板类对象,在future中可以拿到入口函数的返回值 (2)std::async1.async异步调用函数,即创建一个线程,返回一个future模板类2.async使用方式同thread 也可传入类函数(记住前面加&)3.第一参数可以传入 ...原创 2020-03-26 18:00:18 · 1068 阅读 · 0 评论 -
C++11并发与多线程总结(六) --condition_variable条件变量
(1)简介通俗的说法就是线程根据条件去拿锁,若不符合条件就休眠直到有线程唤醒他,才会继续去竞争锁若线程没有进入休眠状态则另一个线程唤醒无效(2)使用方法1.std::condition_variable条件变量的wait()函数可堵塞线程2.调用wait()第一参数是std::unique_lock,第二参数是函数,返回true则返回,否则线程休眠堵塞 3.调用notify_...原创 2020-03-25 15:29:33 · 540 阅读 · 0 评论 -
C++11并发与多线程总结(五) -- window临界区
(1)简介不同的操作系统有不同的API,使用方式不同,即不可跨平台而在C++中使用的多线程接口函数都从语言本身,而不是操作系统,即可跨平台简单了解一些Windows的临界区涨知识 (2)使用方法1.进入临界区相当于加锁2.可多次进入临界区3.进入几次临界区就要调通几次离开临界区函数,否则死锁先定义临界区变量 CRITICAL_SECTION m_winCritic...原创 2020-03-25 14:46:03 · 649 阅读 · 0 评论 -
C++11并发与多线程总结(四) --单例模式(Singleton)下的线程安全问题
(1)单例模式1.单例 Singleton 是设计模式的一种,其特点是只提供唯一一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例2.一般用于操作数据池,或配置属性封装成类3.外部不可创建,创建后指向指针也不可释放(2)多线程获取单例模式接口1.若多个线程同时接口,则可能在单例初始化时多个线程同时创建了多个单例,导致内存泄漏2.解决以上问题必须对其部分...原创 2020-03-24 12:36:31 · 831 阅读 · 0 评论 -
C++11并发与多线程总结(三) --unique_lock替换lock_guardy
(1)unique_lock 类模板1.unique_lock更灵活,但效率比lock_guard低一点,占用内存多一些2.第二参数传入 std::adop_lock ,与lock_guard一样使用前必须先lock3.第二参数传入 std::try_to_lock,拿到锁才进行,不产生堵塞,使用前不能lock4.第二参数传入 std::defer_lock,使用前不能lock,创建后自...原创 2020-03-24 11:51:26 · 507 阅读 · 0 评论 -
C++11并发与多线程总结(二) --独占互斥锁--mutex,lock_guardy与其他mutex
文章目录(一) 线程概念、创建及传参(二) 独占互斥锁–mutex,lock_guardy与其他mutex(三) unique_lock替换lock_guardy(四) 单例模式(Singleton)下的线程安全问题(五) window临界区(六) condition_variable(七) std::async异步任务与std::future< >(八) packa...原创 2020-03-23 13:38:47 · 1153 阅读 · 0 评论 -
C++11并发与多线程总结(一) --线程概念、创建及传参
目录(二) 独占互斥锁–mutex,lock_guardy与其他mutex(三) unique_lock替换lock_guardy(四) 单例模式(Singleton)下的线程安全问题(五) window临界区(六) condition_variable(七) std::async异步任务与std::future< >(八) packaged_task< >...原创 2020-03-23 12:39:55 · 564 阅读 · 0 评论