Сон (системный вызов)


Компьютерная программа ( процесс , задача или поток ) может спать , что переводит ее в неактивное состояние на определенный период времени. В конце концов истечение интервала таймера или получение сигнала или прерывания заставляет программу возобновить выполнение.

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

В Windows эта Sleep()функция принимает единственный параметр — количество миллисекунд до перехода в спящий режим. Функция Sleep()включена в kernel32.dll .[1]

Функция Sleep()имеет разрешение не выше, чем текущее разрешение таймера, обычно 16 мс, но не менее 1 мс, регулируемое с помощью timeBeginPeriod()семейства API-интерфейсов «таймер мультимедиа». Для более высокой точности необходимо использовать цикл занятостиQueryPerformanceCounter() , такой как тот, который используется в gnulib . [2]

В Unix-подобных и других операционных системах POSIXsleep() функция вызывается, предоставляя один параметр типа целое число без знака количества секунд до сна. [3] Версия с более высокой точностью — это nanosleep()функция, а ныне устаревшая версия usleep. [4] POSIX также позволяет выбирать источники синхронизации через расширенную версию clock_nanosleep(). [5]

clock_nanosleep()Была предложена версия языка программирования C , но она была отклонена. Часть того же предложения, посвященная времени UTC, была добавлена ​​в C11 . [6]