C++ STL Multithread Programming
综述
C++11标准在STL层次引入了对多线程的支持,最大的好处是使得跨平台开发更加容易。本文主要对STL多线程解决方案进行总结,内容涵盖另一篇博客Pthreads Basics中的全部主题并会对两种多线程解决方案进行对比,建议读者对比阅读。
(一)线程的创建、终止和错误处理
STL对线程做了一层封装,使用std::thread类表示。cppreference: std::thread
1. 线程的创建
创建一个std::thread对象就代表创建一个线程。 类似于Pthreads,std::thread对象在被创建后线程函数立即执行。
Thread Id
STL中使用std::thread::id类表示Thread Id,并在std::thread中提供了get_id()方法。
2. 线程的终止
线程在以下情况下会终止:
- 线程函数正常return返回
- 被其他线程取消
Joinable vs. Detached (资源回收)
std::thread提供join()表示当前线程等待该线程执行完毕并回收资源,也提供detach()方法设置线程为Detached状态。
3. 错误处理
STL多线程解决方案使用异常处理多线程中出现的错误。
(二)线程同步
TODO