Lock-free programování koordinuje vlákna bez mutexů pomocí atomických compare-and-swap (CAS) smyček, takže alespoň jedno vlákno vždy postupuje, i když ostatní uváznou. Žádné vlákno nemůže být zablokováno jiným, které drží zámek.
CAS
Compare-and-swap atomicky nastaví umístění na novou hodnotu jen tehdy, pokud stále drží očekávanou starou hodnotu; jinak selže a vy opakujete. Je to primitivum za lock-free zásobníky, frontami a čítači.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomické, nedělitelné
else: return false
old, next;
{
old = value.get();
next = old + ;
} (!value.compareAndSet(old, next));
