我必须创建时间段函数才能等待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);
}
}