std::thread 如何关闭
时间: 2024-01-13 12:19:50 浏览: 79
在C++中,`std::thread`对象表示一个独立的线程,它允许你在不同的线程上执行代码。要关闭一个`std::thread`对象,你可以使用其成员函数`join()`或`detach()`。
* `join()`:该成员函数将阻塞当前线程,直到被调用的线程执行完毕。一旦线程执行完毕,`join()`将返回一个布尔值,表示是否发生了异常。如果`join()`返回`true`,则表示线程已经执行完毕;如果返回`false`,则表示线程执行过程中发生了异常。你可以根据这个返回值来决定是否需要进一步处理异常。
* `detach()`:该成员函数将允许被调用的线程独立运行,即线程不会等待其执行完毕。使用`detach()`后,你需要自行管理线程的结束和清理工作。
需要注意的是,一旦调用`join()`或`detach()`,你就不能再对`std::thread`对象进行其他操作,因为它已经被锁定或分离了。
下面是一个简单的示例代码,展示了如何关闭一个`std::thread`对象:
```cpp
#include <iostream>
#include <thread>
void myFunction() {
std::cout << "Hello from thread!" << std::endl;
}
int main() {
std::thread threadObj(myFunction); // 创建并启动一个线程
// 等待线程执行完毕
if (threadObj.joinable()) {
threadObj.join();
}
// 关闭线程对象
threadObj.detach(); // 分离线程并自行管理结束和清理工作
return 0;
}
```
在上面的示例中,我们创建了一个`std::thread`对象并启动了一个新线程来执行`myFunction()`函数。然后我们使用`join()`等待线程执行完毕,最后使用`detach()`分离线程并自行管理结束和清理工作。
阅读全文