Lock-free programming huratibu threads bila mutexes, ikitumia atomic compare-and-swap (CAS) loops ili angalau thread moja daima ipige hatua hata kama nyingine zinakwama. Hakuna thread inayoweza kuzuiwa na nyingine iliyoshikilia lock.
CAS
Compare-and-swap kwa njia ya atomic huweka location kwa thamani mpya tu ikiwa bado inashikilia thamani ya zamani iliyotarajiwa; vinginevyo inashindwa na unajaribu tena. Ni primitive iliyo nyuma ya lock-free stacks, queues, na counters.
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));
