Функция Sleep()

Страницы: 1
RSS
Функция Sleep(), Эффективно ли применять фунцкию Sleep() для понижения нагрузки процессора
 
Эффективно ли применять фунцкию Sleep() для понижения нагрузки процессора? Или, к примеру, если написать код, время которого будет равно времени Sleep()  - ресурс процессора будет затрачен одинаково?
 
Sleep передаёт управление процессором обратно операционной системе, с указанием вернуть управление программе не менее чем через указанный период. Операционная система ставит процессор в режим простоя когда он ничем не используется.
 
Цитата
Артем написал:
Sleep передаёт управление процессором обратно операционной системе, с указанием вернуть управление программе не менее чем через указанный период. Операционная система ставит процессор в режим простоя когда он ничем не используется.
Теперь приблизительно понятно, вопрос был конечно же в контексте функции Main(), думал, что в самой функцииSleep() тоже выполняются какие-нибудь специальные расчеты для "торможения" времени.  Значит толк от нее есть
 
Айдар, Толк от неё совсем в другом: это эмулятор прерывания по таймеру.
 
Айдар, технология которую вы имеете ввиду называется CPU spin - когда вместо ожидания процессор загружен циклом, который ничего не делает и только проверяет, настало ли время прервать самого себя. Это как правило обеспечивает высокую точность времени возврата из паузы, но соответственно использует 100% процессора.


Владимир, возврат управления от ОС в приостановленную программу это и есть прерывание по таймеру.
 
Артем, Это чушь свинячья, а не "прерывание по таймеру". Прерывание прерывает работающую программу, а не возвращает управление в приостановленную.
 
Владимир, при исполнении прерывания планировщика задач изымается управление из текущей задачи и передаётся в одну из стоящих в очереди. Если ничего не выполнялось и процессор простаивал, значит просто запускается стоящая в очереди задача у которой вышел таймер остановки.
 
Артем, Лапуль, я уже говорил, что включён в соавторы одной из операционок - не надо тут мне лапшу с умным видом вешать. Прерывание - это когда обработчик САМОЙ ЗАДАЧИ получает управление, всё остальное - это НЕ прерывание. Операционка может вернуть управление через час, через год - и программа ровным счётом ничего не заметит. Разве что окружение изменилось, вроде значения системных часов.
Страницы: 1
Читают тему (гостей: 1)
Наверх