Активное ожидание (busy waiting)
Ожидание, при котором процессор крутится в цикле, не делая ничего полезного, пока не выполнится условие или не пройдёт нужное время.
Самая древняя задержка в прошивках — for (i = 0; i < 100000; i++);. У неё два классических недостатка: оптимизатор попросту выбросит цикл, если счётчик не volatile, а сама задержка перестаёт быть верной, как только кто-нибудь меняет тактовую частоту или флаги компилятора. Linux калибрует свой цикл задержки при загрузке — это число и выводится как BogoMIPS.
Для коротких пауз, нескольких микросекунд внутри драйвера, активное ожидание нередко оказывается правильным выбором: засыпание и пробуждение обходятся дороже самой паузы. Для всего более долгого лучше таймер или вызов RTOS, дающий поработать другим задачам. Спинлок — это то же активное ожидание, где условием служит блокировка.