«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему Sleep(1) в Windows иногда спит дольше, чем ожидалось?

Почему Sleep(1) в Windows иногда спит дольше, чем ожидалось?

Опубликовано 3 ноября 2024 г.
Просматривать:198

Why Does Sleep(1) in Windows Sometimes Sleep for Longer Than Expected?

Исследование Sleep(), спящего больше, чем ожидалось

Функция Sleep() API Windows — это универсальный инструмент для приостановки выполнения потока. Однако некоторые пользователи сталкиваются с неожиданным поведением, когда функция бездействует дольше, чем предполагалось. В этой статье мы углубимся в эту проблему, исследуя ее распространенность и потенциальные причины.

Несоответствие поведения и продолжительности

При вызове Sleep(1) в цикле 100 раз, общее время сна составляет 1500 мс вместо 100 мс. Это несоответствие предполагает, что фактическая продолжительность сна составляет примерно 15 мс на итерацию. Обратите внимание, что такое поведение различается в разных системах: некоторые пользователи сообщают о постоянной продолжительности сна в 1 мс.

Возможные причины

Чрезмерная продолжительность сна не обязательно может указывать на неисправность оборудования или программного обеспечения. . При планировании потоков Windows используется «квант времени» — временной интервал, к которому привязано выполнение потока. Для ненулевой продолжительности сна фактическая задержка округляется до ближайшего полного такта.

Квант времени по умолчанию

По умолчанию в Windows 7 квант времени равен 15,6 мс. Это означает, что Sleep(1) фактически приостанавливает поток как минимум на 15,6 мс, что приводит к наблюдаемому поведению: спящий режим составляет 15 мс на итерацию.

Альтернативное объяснение

В некоторых случаях наблюдаемая продолжительность сна в 1 мс может быть связана с наличием другой программы или процесса, которые изменили разрешение общесистемного таймера до 1 мс. Это переопределение может привести к более точной продолжительности сна.

Заключение

Поведение функции Sleep() в этом сценарии обычно ожидаемое. Механизм квантования времени планировщика потоков Windows округляет продолжительность сна до полных интервалов, что приводит к увеличению времени сна для небольших промежутков. Однако внешние факторы, такие как измененные настройки разрешения таймера, также могут влиять на поведение сна.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3