#c #condition-variable #standby #sleep-mode
#c #условие-переменная #режим ожидания #спящий режим
Вопрос:
Что происходит с временной переменной условия, когда процессор находится в подвешенном состоянии, например, приостановить доступ к оперативной памяти? Таймер продолжается или он приостановлен? Будет ли пропущено условие тайм-аута, если тайм-аут прошел, когда процессор просыпается? Или таймер просто возобновится, когда процессор проснется?
Комментарии:
1. почему бы вам не попробовать? переведите его в спящий режим на 1 минуту и переведите ваш ноутбук в спящий режим в середине на 1 минуту
2. С условием ожидания времени ожидания таймер, кажется, приостанавливается, когда процессор находится в режиме ожидания. Я заметил, что время ожидания увеличивается на время, когда процессор находится в режиме ожидания. Я не проверял это для std::condition_variable::wait_for, хотя. Я не смог найти ни одной ссылки в Интернете. Я хотел, чтобы кто-нибудь мог указать на него или дать подробное объяснение.
Ответ №1:
Требование состоит в том, что wait
он будет ждать по крайней мере столько, сколько было запрошено. Если ОС делает что-то, из-за чего ожидание занимает больше времени, чем было запрошено, то это то, что происходит: он ждет дольше. Если вам нужны точные (или почти точные) задержки, то вам нужна операционная система реального времени (RTOS).