Зачем использовать уснуть, а не спать
Я читал код приложения, и что-то привлекло мое внимание. Код был: usleep(6*1000*1000)
, Я понимаю, что они используют этот формат для удобства чтения.
Я думаю, что оба sleep
а также usleep
использовать nanosleep
функция, поэтому мой вопрос: почему бы не использовать сон (6), который делает то же самое (то есть: спит в течение 6 секунд)? Мы выигрываем в производительности, когда мы используем usleep
? является usleep
более "универсальный"?
2 ответа
Я думаю, что и сон, и сон используют функцию наноспала,
Они могут или не могут. Я не знаю каких-либо оправданий в стандартах C и POSIX для этого предположения.
поэтому мой вопрос: почему бы не использовать sleep(6), которая делает то же самое (то есть: спит в течение 6 секунд)? Повышаем ли мы производительность, когда используем usleep? усле более "родовой"?
sleep()
функция возникла в AT&T Unix версии 7. usleep()
Функция возникла в BSD 4.3. Хотя POSIX стандартизирует смесь функций, взятых из обоих, было время, когда вы, вероятно, имели только одну из двух доступных вам, в которой была функция вашего специфического вида Unix.
Настоящее время, usleep()
устарел и был удален из POSIX. Это все еще широко поддерживается, но nanosleep()
(или же sleep()
) следует использовать вместо этого в новом коде.
Аргумент для сна - секунды, аргумент для сна - микросекунды. Кроме этого, я думаю, что они идентичны.
sleep ($ n) == usleep ($ n * 1000000) usleep (25000) спит только в течение 0,025 секунд.