C++ 判断线程是否完成
时间: 2023-09-24 14:12:07 浏览: 254
在 C++ 中,可以使用 `std::thread::joinable()` 成员函数来判断线程是否已经完成。如果线程已经完成,`joinable()` 返回 `false`,否则返回 `true`。
下面是一个示例代码,演示了如何使用 `joinable()` 来判断线程是否完成:
```cpp
#include <iostream>
#include <thread>
void threadFunc() {
// 线程执行的代码
std::this_thread::sleep_for(std::chrono::seconds(3));
}
int main() {
std::thread myThread(threadFunc);
if (myThread.joinable()) {
std::cout << "Thread is running." << std::endl;
} else {
std::cout << "Thread is not running." << std::endl;
}
myThread.join();
if (myThread.joinable()) {
std::cout << "Thread is running." << std::endl;
} else {
std::cout << "Thread is not running." << std::endl;
}
return 0;
}
```
在这个示例中,我们创建了一个名为 `myThread` 的线程,并在主线程中判断它是否可加入(joinable)。在线程启动之前,`joinable()` 返回 `true`,表示线程尚未完成。然后,我们调用 `join()` 方法等待线程完成。在线程完成后,再次调用 `joinable()`,此时返回 `false`,表示线程已经完成。
需要注意的是,如果尝试对一个已完成的线程调用 `join()`,会导致程序崩溃。因此,在调用 `join()` 之前,最好先使用 `joinable()` 来判断线程是否需要加入。
阅读全文