Назад | Перейти на главную страницу

Блокирует ли bash usleep? Или он уступит место другим потокам?

Насколько я понимаю, в bash есть команда usleep. Это «занятый» или «блокирующий» сон? Или это уступит время другим процессам?

Это, вероятно, действительно не относится к ошибке сервера (хотя я не уверен, к какому сайту он будет принадлежать), но все равно вот ответ:

Оболочка bash не имеет встроенной usleep команда (и не имеет встроенной sleep команда). sleep это стандарт программа в системах Unix и доступен независимо от того, какую оболочку вы используете. usleep Похоже, это программа, написанная людьми из RedHat, и она может присутствовать только в дистрибутивах, связанных с RedHat (RHEL и производные; Fedora). Похоже, что в Debian его нет.

В любом слючае, sleep и usleep использовать стандарт sleep() и usleep() системные вызовы, которые приостанавливают выполнение программы на указанное время [0] (делая их «блокирующими») и не используют процессорное время во время сна (заставляя их не "занятый").

[0] Фактически не гарантируется, что количество времени точно будет запрошенным из-за того, как работает планировщик ядра. Обычная гарантия состоит в том, что он будет спать по крайней мере требуемое время. Это не проблема для целых чисел sleep() длительности, потому что разница будет намного меньше секунды, но usleep() длительности (и дробные sleep() длительности) может оказаться неточным.

Здесь нет usleep команда в bash. usleep: command not found на bash 4.3.11 и ничего подобного, упомянутого в журнал изменений ...