c++ - 在不同的线程中停止无限循环

标签 c++ multithreading

在我的应用程序中,我使用多个线程来执行一些耗时的任务,该任务旨在在应用程序的整个持续时间内运行。我想要实现的是在退出应用程序之前在第二个线程中终止循环的一些漂亮而干净的方法,这样我就可以在循环后清理然后关闭所有内容。

到目前为止,我已经想到了这种方法,但老实说,我不是很喜欢它:

#include <iostream>
#include <thread>

bool stop_flag;

void foo()
{
    while(!stop_flag)
    {
        //do something
    }
    clean_after();
}

int main()
{
    stop_flag = false;
    std::thread whileThread(foo);

    // app lifetime

    stop_flag = true;   
    whileThread.join();
    return 0;
}

最佳答案

只要稍作改动,您的代码就可以了:

std::atomic<bool> stop_flag;

关于c++ - 在不同的线程中停止无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41470942/

相关文章:

c++ - GetUserNameExA 函数无法在系统启动时(GINA)提供用户详细信息?

c++ - 在单独的线程中启动带参数的成员函数

java - 为什么 kotlin 协程被称为异步?

从另一个线程调用的Java方法,数据更新不是即时的

c++ - 错误: field 'dateOfBirth' has incomplete type 'Poco::Data::Date'

C++ "Could not convert ' 类实例'从 'Class (*)()' 到 'Class' ”

c++ - 由于 int main() 函数的定义错误,C++ 编译器拒绝了我的代码

c++ - 数组的值随机变化

java - 以编程方式将第二个 Selenium Grid 节点作为 Grid 进程中的另一个进程生成时出现 ParameterException

Python socket.listen(...)