Промежуток времени в переполнении стека

Мне пришлось создать функцию 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));
}}
}

Спасибо,

-1

Решение

Вы можете измерить общее время, прошедшее.

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);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]