Programiranje brez zaklepov usklajuje niti brez mutexov, z uporabo atomarnih zank compare-and-swap (CAS), tako da vsaj ena nit vedno napreduje, tudi če druge obtičijo. Nobena nit ne more biti blokirana z drugo, ki drži zaklep.
CAS
Compare-and-swap atomarno nastavi lokacijo na novo vrednost le, če ta še vedno vsebuje pričakovano staro vrednost; sicer spodleti in poskusite znova. To je gradnik za sklade, vrste in števce brez zaklepov.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
old, next;
{
old = value.get();
next = old + ;
} (!value.compareAndSet(old, next));
