@daniil14056

Как работают функции sleep?

Интересует как реализованы они, не ужели они в долгом цикле каждую 1/1000....0 секунды проверяют время.
  • Вопрос задан
  • 800 просмотров
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как работают функции sleep

Вообще есть два основных подхода -- busy wait (ожидание в цикле) и scheduler-based (с использованием планировщика). Который из них используется зависит от контекста и возможностей окружения: бывают контектсты, в которых планировщик недоступен (например, обработчик аппаратного прерывания в ядре ОС), бывает кооперативная многозадачность, при которой планировщик не может гарантировать, что процесс возобновит выполнение через заданное время, бывают задержки настолько маленькие, что обращение к планировщику не имеет смысла. В этих случаях используют busy wait. При наличии вытесняющей многозадачности и таймеров высокой точности для достаточно длинных задержек можно использовать планировщик. В ядре linux используются оба эти подхода.
Ответ написан
Комментировать
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Зависит от конкретной реализации.
В Windows Sleep() останавливает вызвавший ее поток на нужное количество тактов планировщика потоков. И в это время процессор просто выполняет другие потоки.
В DOS Sleep() запускал длинный цикл, внутри которого программа не делала ничего.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы