c++11多线程(十七):实战总结
2016-01-07 09:59
369 查看
目录:
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多线程(十八):线程池
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多线程(十八):线程池
相关文章推荐
- C++11:"auto"和"decltype"类型说明符的思考
- 一行代码暴露你的C++水平
- C++重载操作符
- C语言学习之关键字第四讲
- 在oc语言中字符串和整型数相互转换
- 学习笔记(六):C++串口连接
- 值得推荐的C/C++框架和库 (真的很强大)
- 线程安全单例模式(C++)
- c语言,java类型转换时遇到的大小端问题
- Sicily 1325. Digit Generator
- 日志 c/c++ 正则表达式 regex
- 【C语言提高40】结构体套一级指针和二级指针
- 【C语言提高38】结构体套一级指针
- C语言:关于字符串的编程题
- Sicily 1129. ISBN
- 【C语言提高37】结构体做函数参数进阶
- C语言:利用排序二叉树进行排序
- C++/STL Bitset (转)
- 半夜来一发C语言gdbm数据库基本操作
- C++之学习记录1