337просмотров
11 декабря 2025 г.
Score: 371
Две самые проклятые реализации функции sleep, которые я когда либо видел в одном видео. Причем это не прикол а реальный код, до недавнего времени обслуживающий CI runners на github. Версия 1:
Если в системе нет команды sleep, то n раз вызываем ping какого-то IP, а если нет и пинга - n тысяч раз пишем строку в /dev/null. Кто-то посчитал что это плохо, и выкатил версию 2:
На псевдокоде работает так - while (current_seconds - start_seconds) != n: do_some_work() Обратите внимание на условие выхода из цикла - только когда прошло точное количество секунд. И если вы хотели спать 5 сек, а на момент очередной итерации цикла уже прошло 6 - ваш цикл будет крутиться до следующего ребута системы. Баг в таком виде жил 3 года, и все это время люди репортили, что у них почему-то зависают пайплайны) #разработка