判断std::thread结束
时间: 2023-11-07 09:49:26 浏览: 63
要判断`std::thread`是否结束,可以使用`std::thread::joinable()`函数。当一个`std::thread`对象已经开始执行线程函数,并且尚未调用`join()`或`detach()`函数时,`joinable()`函数返回`true`。当线程函数执行完毕或者已经被分离时,`joinable()`函数返回`false`。
因此,要判断`std::thread`是否结束,可以通过以下步骤进行操作:
1. 创建一个`std::thread`对象,并传递线程函数和参数(如果有的话)。
2. 使用`joinable()`函数检查线程是否可以被加入(join)。
3. 如果`joinable()`函数返回`true`,则线程尚未结束。您可以选择使用`join()`函数来等待线程结束。
4. 如果`joinable()`函数返回`false`,则线程已经结束或者已经被分离。在这种情况下,无需进一步操作。
以下是一个示例代码,演示了如何使用`joinable()`函数来判断`std::thread`是否结束:
```cpp
#include <iostream>
#include <thread>
void myThreadFunction() {
// 线程函数的实现
}
int main() {
std::thread myThread(myThreadFunction);
if (myThread.joinable()) {
// 线程尚未结束
myThread.join(); // 等待线程结束
} else {
// 线程已经结束或者已经被分离
}
return 0;
}
```
在这个例子中,如果`myThread.joinable()`返回`true`,则线程尚未结束,我们调用`join()`函数等待线程结束。否则,我们可以确定线程已经结束或者已经被分离,无需进一步操作。