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

标签 c++ multithreading macos

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

相关文章:

c++ - 在 C++ 中使用合并排序算法合并文件

c++ - 使用参数从基函数指针调用基方法

macos - 如何显示 NSTimer 下次触发之前的秒数

macos - Mac 上带有 FFmpeg 的网络摄像头 : Selected framerate (29. 970030) 不受设备支持

android - 使用 CMake 在 C++ android 应用程序中使用 libcurl

c++ - 静态库机器独立吗?

c# - 在单独的 ThreadPool 中执行某些后台任务,以避免在主线程中执行的关键任务被饿死

ios - 基于类的 Swift 常量是否强制为可选

java - 线程无法被调用

java - 在Java中,有没有办法在通知线程后获取线程的实际等待时间