Programowanie bez blokad (lock-free) koordynuje wątki bez muteksów, używając atomowych pętli compare-and-swap (CAS), tak że przynajmniej jeden wątek zawsze robi postęp, nawet jeśli inne utkną. Żaden wątek nie może zostać zablokowany przez inny trzymający blokadę.
CAS
Compare-and-swap atomowo ustawia lokalizację na nową wartość tylko wtedy, gdy nadal zawiera oczekiwaną starą wartość; w przeciwnym razie zawodzi i ponawiasz. To prymityw stojący za stosami, kolejkami i licznikami bez blokad.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
