对于完成布尔值设置为 true 后未停止的循环

For loop not stopping after finish bool set to true

本文关键字:循环 true 于完成 布尔值 设置      更新时间:2023-10-16

抱歉,这可能是一个愚蠢的问题,但我观看了线程基础知识视频,并尝试制作一个非常基本的计时器。计时器工作,但即使 isFinished 布尔值为真,它也不会停止?任何人都知道修复程序,抱歉,如果这是一个愚蠢的问题和简单的解决方案。

static bool isFinished = false;
void DoWork()
{
using namespace std::literals::chrono_literals;
while (!isFinished)
{
for (int i = 0; ; i++)
{
std::cout << i << "s" <<  "n";
std::this_thread::sleep_for(0.90s);
}
}
}
int main()
{
std::thread worker(DoWork);
std::cin.get();
isFinished = true;
worker.join();
std::cout << "Timer finished";
std::cin.get();
}

内部 for 循环没有停止条件,也没有其他机制来中断/离开它。您可以在 for 循环正文中添加类似"if(isDone(break;"的内容,或者在 for(...( 本身中包含条件。