我一直在寻找答案,并且确实找到了一些可能的方法来使用 C++ 停止正在运行的并行线程,但这些解决方案通常仅适用于 Windows(例如,TerminateThread() 函数)。有没有办法停止 Mac 上正在运行的并行线程(我正在使用 CodeBlocks)?
最佳答案
典型的干净/安全设置可能是......
std::atomic<bool> exit{false};
std::thread thread([&]{
while (!exit) { /* do stuff */ }
});
// later, when you want to exit:
exit = true;
// `join` before the `thread` object goes out of scope
thread.join();
从中您可能会看到有无数种方法可以告诉您的线程停止运行并干净地结束。只需确保您使用的任何方式都是线程安全的(原子的或受互斥体保护的),并确保在线程对象超出范围之前或任何时候调用 thread.join()
希望阻止等待线程完成。
关于c++ - 如何在 Mac 上使用 C++ 停止正在运行的并行线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929476/