您的位置:首页 > 编程语言 > C语言/C++

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多线程(十八):线程池
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: