Что происходит с временной переменной условия, например, std::wait_for, когда процессор приостановлен или находится в режиме ожидания?

#c #condition-variable #standby #sleep-mode

#c #условие-переменная #режим ожидания #спящий режим

Вопрос:

Что происходит с временной переменной условия, когда процессор находится в подвешенном состоянии, например, приостановить доступ к оперативной памяти? Таймер продолжается или он приостановлен? Будет ли пропущено условие тайм-аута, если тайм-аут прошел, когда процессор просыпается? Или таймер просто возобновится, когда процессор проснется?

Комментарии:

1. почему бы вам не попробовать? переведите его в спящий режим на 1 минуту и переведите ваш ноутбук в спящий режим в середине на 1 минуту

2. С условием ожидания времени ожидания таймер, кажется, приостанавливается, когда процессор находится в режиме ожидания. Я заметил, что время ожидания увеличивается на время, когда процессор находится в режиме ожидания. Я не проверял это для std::condition_variable::wait_for, хотя. Я не смог найти ни одной ссылки в Интернете. Я хотел, чтобы кто-нибудь мог указать на него или дать подробное объяснение.

Ответ №1:

Требование состоит в том, что wait он будет ждать по крайней мере столько, сколько было запрошено. Если ОС делает что-то, из-за чего ожидание занимает больше времени, чем было запрошено, то это то, что происходит: он ждет дольше. Если вам нужны точные (или почти точные) задержки, то вам нужна операционная система реального времени (RTOS).