首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在while循环中每10 of调用一次代码块,而不停止循环c++

在while循环中每10 of调用一次代码块,而不停止循环c++
EN

Stack Overflow用户
提问于 2022-11-20 15:30:07
回答 1查看 35关注 0票数 -2

因此,我试图在while循环中每10‘m运行一次代码块,而不停止循环(睡眠)。

我希望取得这样的成就:

代码语言:javascript
复制
while (true) {
    if (should_run_the_10ms_code) {
        // some code (once every 10 ms)
    }

    // some other code (every tick)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-20 15:54:33

std::chrono::steady_clock::now从一个单调的时钟中给出当前时间。下面是一种相对简单的使用方法:

代码语言:javascript
复制
auto timer = std::chrono::steady_clock::now();
while (true) {
    auto now = std::chrono::steady_clock::now();
    std::chrono::duration<double, std::milli> timer_diff_ms = timer - now;
    if (timer_diff_ms >= 10.0) {
        // some code (once every 10 ms)
        timer = now;
        // or
        // timer = std::chrono::steady_clock::now();
        // if the "some code" takes a bit of time
    }

    // some other code (every tick)
}

注意,如果在timer_diff_ms调用之间发生了一些轻微的事情(可能在“其他代码”部分,可能与您的程序完全无关),那么now()可能要比10大得多。

如果您不需要std::chrono::milliseconds (它将是一些整数类型),也可以使用double而不是std::chrono::duration<double, std::milli>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74509450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档