在我的应用程序中,我使用多个线程来执行一些耗时的任务,该任务旨在在应用程序的整个持续时间内运行。我想要实现的是在退出应用程序之前在第二个线程中终止循环的一些漂亮而干净的方法,这样我就可以在循环后清理然后关闭所有内容。
到目前为止,我已经想到了这种方法,但老实说,我不是很喜欢它:
#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/