Lock-free programlama, thread'leri mutex olmadan koordine eder; atomik compare-and-swap (CAS) döngüleri kullanır, böylece diğerleri takılsa bile her zaman en az bir thread ilerleme kaydeder. Hiçbir thread, bir kilit tutan başka biri tarafından bloklanamaz.
CAS
Compare-and-swap, bir konumu yalnızca hâlâ beklenen eski değeri tutuyorsa atomik olarak yeni bir değere ayarlar; aksi halde başarısız olur ve yeniden denersiniz. Lock-free stack'ler, kuyruklar ve sayaçların arkasındaki primitif budur.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
