gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:04 26 4
gpt4 key购买 nike

我一直在寻找答案,确实找到了一些可能的方法来使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com