std::thread 怎么使用
时间: 2024-12-24 08:12:12 浏览: 8
`std::thread`是C++11引入的标准库中的线程支持类,它允许你在C++程序中创建和管理并发执行的任务。使用`std::thread`的基本流程通常包括以下几个步骤:
1. **包含头文件**:
首先你需要包含`<thread>`头文件:
```cpp
#include <thread>
```
2. **定义函数**:
函数将成为线程要执行的工作,这个函数通常被称为线程的"主体"。例如:
```cpp
void threadFunction() {
// 这里编写你的线程任务代码
}
```
3. **创建线程**:
使用`std::thread`构造函数,并传入需要执行的函数以及传递给该函数的参数(如果有的话):
```cpp
std::thread myThread(threadFunction);
```
4. **启动线程**:
调用`start()`方法开始线程执行:
```cpp
myThread.start();
```
5. **等待线程完成**(可选):
如果希望主线程等待线程结束,可以使用`join()`方法:
```cpp
myThread.join(); // 主线程会阻塞直到myThread完成
```
6. **异常处理**:
为了避免未捕获的线程内部错误导致程序崩溃,可以在适当的位置添加`catch`块来处理线程异常。
7. **取消线程**(可选):
`std::thread`提供了`detach()`方法,用于让线程独立运行,不再关心它的生命周期:
```cpp
myThread.detach(); // 线程会立即脱离控制并继续执行
```
8. **清理资源**:
确保在程序结束前释放所有`std::thread`实例,因为它们可能会持有系统资源,如互斥锁或信号槽。
```cpp
myThread.join(); // 如果需要等待线程结束
myThread.detach(); // 或者用detach来让它独立运行
```
阅读全文