Lock-free programiranje koordinira niti bez mutexa, koristeći atomske compare-and-swap (CAS) petlje tako da barem jedna nit uvijek napreduje čak i ako druge zapnu. Nijedna nit ne može biti blokirana od strane druge koja drži zaključavanje.
CAS
Compare-and-swap atomski postavlja lokaciju na novu vrijednost samo ako još drži očekivanu staru vrijednost; inače ne uspije i vi ponovite. To je primitiv iza lock-free stogova, redova i brojača.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomski, nedjeljivo
else: return false
old, next;
{
old = value.get();
next = old + ;
} (!value.compareAndSet(old, next));
