A lock-free programozás mutexek nélkül koordinálja a threadeket, atomi compare-and-swap (CAS) loopokat használva, így legalább egy thread mindig halad, még ha mások megakadnak is. Egyetlen thread sem blokkolható egy másik által, amely egy lockot tart.
CAS
A compare-and-swap atomilag egy új értékre állít egy helyet, csak ha az még mindig a várt régi értéket tartja; egyébként megbukik és újrapróbálod. Ez a primitív a lock-free stackek, queue-k és számlálók mögött.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomi, oszthatatlan
else: return false
