C++11 std::thread

C++11 std::thread
枫C++11 std::thread
C++11 以前,C++ 并没有统一的标准线程库,多线程代码往往依赖平台 API。
从 C++11 开始,标准库正式提供了std::thread,多线程编程终于有了统一入口。
1. 基本创建方式
1 |
|
这里 t 就代表一个新线程。
2. join 和 detach
2.1 join
1 | t.join(); |
表示等待线程执行结束。
这通常是最常见、也最稳妥的处理方式。
2.2 detach
1 | t.detach(); |
表示让线程独立运行,当前线程不再等待它。
这种方式用起来要更小心,因为线程生命周期就和外部对象关系没那么直观了。
3. 传参数给线程
1 | void printNum(int n) |
也可以配合 lambda:
1 | std::thread t([] { |
4. 一个简单示例
1 |
|
5. 使用时要注意的点
5.1 线程对象销毁前必须处理
如果 std::thread 还处于 joinable 状态就直接析构,程序会直接终止。
所以通常要么 join(),要么 detach(),不能忘。
5.2 共享数据要考虑同步
多个线程一起改同一份数据时,需要搭配互斥量、原子变量等同步工具。
5.3 线程不是越多越好
线程切换本身也有成本,任务颗粒度太小反而不划算。
总结
std::thread 是 C++ 标准线程库的基础入口。
它让线程创建、参数传递和基础管理终于摆脱了平台依赖。日常开发里,只要涉及多线程逻辑,这个类基本就是第一步。














