c++11多线程(十七):实战总结

来源:互联网 发布:java大学基础教程 编辑:程序博客网 时间:2024/05/18 14:44


目录:

1.常用基础

2.实战进阶

3.高阶实战


对c++11 多线程,前面整理了很多细节,可在实战中不断总结,本文做一个简单的汇总,简单提炼一下常用的基础及场景。


常用基础:

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/50462763
std::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多线程(十八):线程池

0 0
原创粉丝点击