目录:
1.常用基础
2.实战进阶
3.高阶实战
常用基础:
1.条件变量:wait 及 notify 配合使用
wait:让线程空闲
notify:唤醒线程进入工作状态
......
参考:C++11多线程(八):std::condition_variable 详解
2.共享数据处理:让线程处理数据,并且在其他线程能够获取到该结果。
wait:等待时间,时间点,或future状态变化
get:获取future的值
......
参考:C++11多线程(五)-(七):<future>系列详解
实战进阶:
1.std::async
参考之前的文章:http://blog.csdn.net/ceasadan/article/details/50462763std::future 相关的函数:std::async()
子线程异步执行任务,并在其他线程等待子线程变为完成状态,再获取子线程直接结果数据。
2.std::atomic原子:load和store
参考之前的文章:
http://blog.csdn.net/ceasadan/article/details/50467717
http://blog.csdn.net/ceasadan/article/details/50467212
所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。
总之:原子比原来的lock更加实用,效率高得多。
高阶实战:
1.生产者-消费者模型
参考之前的文章:http://blog.csdn.net/ceasadan/article/details/50469647
N个异步生产者,生产数据;N个消费者异步获取结果数据;
2.线程池:处理多任务并发
参考之前的文章:c++11多线程(十八):线程池