在C++中,可以通过以下几种方式来判断std::thread何时结束:
示例代码:
#include <iostream>
#include <thread>
void threadFunction() {
// 子线程执行的代码
std::cout << "子线程执行中..." << std::endl;
}
int main() {
std::thread t(threadFunction); // 创建子线程
// 主线程执行的代码
std::cout << "主线程执行中..." << std::endl;
t.join(); // 阻塞主线程,直到子线程执行完毕
std::cout << "子线程执行完毕,主线程继续执行。" << std::endl;
return 0;
}
示例代码:
#include <iostream>
#include <thread>
void threadFunction() {
// 子线程执行的代码
std::cout << "子线程执行中..." << std::endl;
}
int main() {
std::thread t(threadFunction); // 创建子线程
// 主线程执行的代码
std::cout << "主线程执行中..." << std::endl;
t.detach(); // 分离子线程,使其独立执行
std::cout << "主线程继续执行,子线程可能还在执行中。" << std::endl;
return 0;
}
需要注意的是,使用detach()函数后,主线程结束时,子线程可能还在执行,这可能导致子线程被强制终止。
示例代码:
#include <iostream>
#include <thread>
void threadFunction() {
// 子线程执行的代码
std::cout << "子线程执行中..." << std::endl;
}
int main() {
std::thread t(threadFunction); // 创建子线程
// 主线程执行的代码
std::cout << "主线程执行中..." << std::endl;
if (t.joinable()) {
t.join(); // 阻塞主线程,直到子线程执行完毕
}
std::cout << "子线程执行完毕,主线程继续执行。" << std::endl;
return 0;
}
通过以上三种方式,可以在C++中判断std::thread何时结束。需要根据具体的场景选择合适的方式来管理线程的生命周期。
领取专属 10元无门槛券
手把手带您无忧上云