1-C++的并发世界
1.1 何谓并发
并发的两种方式
- 多核机器上的真正并行
- 单核机器的任务切换
并发的两种途径
- 多进程并发
1.1 多进程并发需要通过操作系统进行进程间通信 - 多线程并发
2.1 多线程并发需要共享内存
1.2 为什么使用并发
主要原因有两个:关注点分离(SOC)和性能
为了分离关注点
通过将相关的代码与无关的代码分离.
比如:
实现DVD播放程序,分开用户界面和DVD播放
为了性能
两种方式利用并发提高性能:
- 将一个单个任务分成几个部分,切各自并行运行,从而降低总运行时间,这就是任务并行(task parallelism)
- 每个线程在不同的数据部分执行相同的操作,也就是数据并行(data parallelism)
什么时候不使用并发
不使用并发的唯一原因就是,收益比不上成本
1.4 开始入门
1.4.1Hello Concurrent World
清单 1.1 一个简单的Hello, Concurrent World程序:
#include <iostream>
#include <thread> //①
void hello() //②
{
std::cout << "Hello Concurrent World\n";
}
int main()
{
std::thread t(hello); //③
t.join(); //④
}
- 头文件
#include<thread>
- 多线程初始化函数
hello
- 初始化多线程
t
- 调用
join()