C 中的时间衰变代码

Time lapse code in C++

本文关键字:代码 时间      更新时间:2023-10-16

我必须创建时间段函数才能等待x循环中的x时间。

以下代码检查 m_aborttimelapsethread 的布尔值,但是在运行一个小时后,我注意到此代码的执行时间创建了10秒钟的延迟。是否可以尽可能频繁地检查 m_aborttimelapsethread ,并在函数中等待x的时间量,而我观察到的延迟?

void Acquisition::TimeLapseCount() {
int max10msWaitTimes = m_timeLapseInMs / 10;
while (true) {
    m_timeLapseImageSaved = true;
    for (int i = 0; i < max10msWaitTimes; i++)
    {
        if (m_abortTimeLapseThread) {
            return;
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }

}
}

谢谢,

您可以测量总的时间。

void Acquisition::TimeLapseCount() {
    auto waitUntil = std::chrono::system_clock::now() + std::chrono::milliseconds(m_timeLapseInMs);
    while (true) {
        m_timeLapseImageSaved = true;
        while (waitUntil > std::chrono::system_clock::now())
        {
            if (m_abortTimeLapseThread) {
                return;
            }
            std::this_thread::sleep_for(std::chrono::milliseconds(10));
        }
        waitUntil += std::chrono::milliseconds(m_timeLapseInMs);
    }
}