0

我有主线程,它使用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++ 中的线程。但我相信这一定是一个相当普遍的用例。所以,一般来说,这种情况是如何处理的。如何优雅地终止程序?

4

0 回答 0