Programavimas be užraktų koordinuoja gijas be mutex'ų, naudodamas atominius compare-and-swap (CAS) ciklus, kad bent viena gija visada darytų pažangą, net jei kitos užstringa. Jokia gija negali būti blokuojama kitos, laikančios užraktą.
CAS
Compare-and-swap atomiškai nustato vietą į naują reikšmę tik tada, jei ji vis dar laiko tikėtiną seną reikšmę; kitaip jis nepavyksta ir jūs kartojate. Tai primityvas už be užraktų dėklų, eilių ir skaitiklių.
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));
