c++11并行、并发与多线程编程
2024-10-19 04:31:48
首先,我们先理解并发和并行的区别。
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。所以我认为它们最关键的点就是:是否是『同时』。
如上所示,并发可以理解为在同一时间段内发生,而并行是指两个事件的发生是处于平行状态的,即同时发生的。
我们知道JavaScript是不支持多线程的,而python、php、java等是支持多线程的,同样,c++也是支持多线程编程的。
在c++11中,有下面的头文件是用来支持多线程编程的:
- <atomic>: 该头文件声明了两个类,即std::atomic以及st::atomic_flag。
- <thread>: 该头文件主要声明了std::thread类。
- <mutex>: 中文是互斥量的意思。该头文件中主要声明了与互斥量(mutex)相关的类,比如std::lock_gruad以及std::unique_lock等,以及其他的类型和函数。
- <condition_variable>: 该头文件声明了与条件变量相关的类,包括std::condition_variable以及std::condition_variable_any。
- <future>: 该头文件主要声明了std::promise,std::package_task两个Provider类以及std::future和std::shared_future类,另外还有一些与之相关的类型和函数,std::async()函数就声明在这个头文件中。
最新文章
- HK&;&;CC JS学习:第一周——NO.2this
- PHP无限极分类
- php翻页
- Linux_VPN—pptpd构架方法
- Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮
- [原创]android自定义动画的一点感悟
- Jar mismatch! Fix your dependencies
- ERROR 1201 (HY000) Could not initialize master info structure
- Docker基础技术:AUFS
- echars3.0 柱状图大小设置
- 在linux下配置Nginx+Java+PHP的环境
- uva 1335 - Beijing Guards(二分)
- EL&;&;JSTL
- Spring基础复习
- Day8 接口与归一化设计
- centos 6.5升级内核到3.1
- js处理时间时区问题
- python 带正则的search 模块
- Sql 通过表名查找所有列名
- 使用tensorflow的lstm网络进行时间序列预测