Мне пришлось создать функцию timelapse, чтобы ждать 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);
}
}
Других решений пока нет …