Leksykon IT › Programowanie › Aktywne oczekiwanie (busy waiting)

Aktywne oczekiwanie (busy waiting)

Programowanie Svenska → Zaktualizowano: 2026-11-03

Oczekiwanie polegające na kręceniu procesora w pętli, która nie robi nic pożytecznego, dopóki nie spełni się warunek albo nie upłynie dość czasu.

Najstarsze opóźnienie w firmware to for (i = 0; i < 100000; i++);. Ma dwa klasyczne błędy: optymalizator usuwa taką pętlę w całości, chyba że licznik jest volatile, a opóźnienie przestaje być poprawne w chwili, gdy ktoś zmieni częstotliwość zegara albo flagi kompilatora. Linux kalibruje pętlę opóźniającą przy starcie — ta liczba to właśnie wypisywane BogoMIPS.

Przy krótkich oczekiwaniach, rzędu kilku mikrosekund w sterowniku, aktywne oczekiwanie jest często dobrym wyborem: uśpienie i obudzenie kosztuje więcej niż samo czekanie. Przy dłuższych lepszy jest timer albo wywołanie RTOS-a, które pozwala działać innym zadaniom. Spinlock to nic innego jak aktywne oczekiwanie, w którym warunkiem jest blokada.

← Wróć do leksykonu