我希望 STL 线程在完成它应该做的事情后自行终止;另外,有什么方法可以知道线程何时结束?比如某个事件。
提前致谢。
最佳答案
如果您想要一种方法来轮询线程的完成状态,而不是简单地使用 join
进行阻塞, 你可以用 async
产生你的线程并轮询返回的 future
由 waiting 完成超时为 0:
void f() {
std::this_thread::sleep_for(std::chrono::seconds{2});
}
int main() {
auto const zero = std::chrono::seconds{0};
auto result = std::async(std::launch::async, f);
while (result.wait_for(zero) != std::future_status::ready) {
std::cout << "I'm still waiting...\n" << std::flush;
std::this_thread::sleep_for(std::chrono::milliseconds{100});
}
result.get();
std::cout << "Done.\n";
}
关于c++ - 自动终止 C++11 STL 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21664360/