这个章节涵盖了
- 开启线程, 各种在线程上运行指定代码的方式
- 等待线程结束
- 线程的唯一标识
好了,你已经决定在你应用上使用并发. 更具体地说是你决定使用多线程了. 那么现在, 怎么启动这些线程? 怎么检测它们已经结束了? 怎么检测它们? C++标准库让大多数线程管理的任务相对简单, 线程通过std::thread对象管理所有的事情. 对于那些不是那么简单的任务, C++标准库提供了一定的灵活性能够让你使用这些基础模块构建你需要的复杂场景.
在这个章节中, 以一下的一些基础作为开始:
- 开始一个线程, 并等待其结束, 或者让其在后台运行
- 看看在线程启动时, 怎么传递参数给线程函数; 怎么将线程的所有权从一个std::thread对象转移给另一个
- 选择运行时多线程的数量(std::hardware_concurrency,); 识别/找到特定的线程
线程管理基础
所有C++程序至少有一个线程, 由C++运行时启动: 这个线程运行main()函数. 你的程序可以运行其它线程函数的线程. 这些线程相互之间并行运行, 当然与初始线程也是并行的. 当指定的入口函数返回了, 这跟main()函数退出,程序退出是一样的. 正如你下面所看到的, 你会有一个std::thread对象管理线程, 等待它结束; 但首先你得先启动这个线程, 下面看看如何启动线程