如何在Mac上用c++停止正在运行的并行线程

How to stop a running parallel thread with C++ on Mac?

本文关键字:运行 并行 线程 Mac 上用 c++      更新时间:2023-10-16

我一直在寻找答案,确实找到了一些可能的方法来停止运行的并行线程与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(),或者在您希望阻塞等待线程完成的任何时候。