Il-lock-free programming jikkoordina t-threads mingħajr mutexes, billi juża loops atomiċi ta' compare-and-swap (CAS) biex mill-inqas thread wieħed dejjem jagħmel progress anke jekk l-oħrajn jieqfu. L-ebda thread ma jista' jiġi mblukkat minn ieħor li jżomm lock.
CAS
Compare-and-swap jissettja b'mod atomiku post għal valur ġdid biss jekk għadu jżomm il-valur qadim mistenni; inkella jfalli u terġa' tipprova. Huwa l-primittiva wara l-lock-free stacks, queues, u 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));
