我有主线程,它使用std:async
.
void fileIO() {
while (true) {
SomeClass::someStaticFunction();
}
}
int main() {
...
...
std::future<void> fileIOFuture = async(std::launch::async, fileIO);
while (!exitMainloop) // this value is set somewhere else in the code: https://github.com/TigerVNC/tigervnc/blob/master/vncviewer/vncviewer.cxx#L702
run_mainloop();
delete cc; // cc is some class
return 0;
}
我想要的是当exitMainloop
值被设置时,即主循环退出,std::async
调用创建的工作线程也应该优雅地退出。
我读到这篇文章说你不能取消/停止 C++ 中的线程。但我相信这一定是一个相当普遍的用例。所以,一般来说,这种情况是如何处理的。如何优雅地终止程序?