Введение

Постоянная проверка условия в вычислительной технике.

В информатике и разработке программного обеспечения, занятое ожидание, занятый цикл или спиннинг — это техника, при которой процесс многократно проверяет, истинно ли некоторое условие, например, доступен ли ввод с клавиатуры или блокировка. Спиннинг также может использоваться для создания произвольной задержки времени, что было необходимо на системах, не имевших возможности ожидать заданный промежуток времени. Скорость процессоров значительно различается на разных компьютерах, особенно учитывая, что некоторые процессоры динамически регулируют скорость в зависимости от текущей нагрузки. Следовательно, использование спиннинга для создания задержки времени может приводить к непредсказуемым или даже противоречивым результатам на разных системах, если в коде не предусмотрено определение времени, необходимого процессору для выполнения "пустого" цикла, или если код цикла явно не проверяет системное время. В большинстве случаев спиннинг считается антипаттерном и его следует избегать, поскольку процессорное время, которое можно было бы использовать для выполнения другой задачи, тратится впустую на бесполезную деятельность. Однако спиннинг может быть оправданной стратегией в определенных ситуациях, в частности, при реализации спинлоков в операционных системах, предназначенных для работы на многопроцессорных системах.

Правильное использование

В программировании низкого уровня, активное ожидание (busy waiting) может быть даже предпочтительным. Реализация обработки, управляемой прерываниями, для каждого аппаратного устройства может быть нежелательной или непрактичной, особенно для устройств, к которым обращаются редко. Иногда необходимо записать управляющие данные в аппаратное обеспечение, а затем запросить статус устройства, являющийся результатом операции записи, который может стать корректным только после определенного количества тактов процессора после записи. Программист мог бы вызвать функцию задержки операционной системы, но это может занять больше времени, чем простое ожидание (spinning) в течение нескольких тактов, пока устройство не вернет свой статус.