Lock-free-programmering koordinerer tråde uden mutexes ved at bruge atomiske compare-and-swap-løkker (CAS), så mindst én tråd altid gør fremskridt, selv hvis andre går i stå. Ingen tråd kan blive blokeret af en anden, der holder en lock.
CAS
Compare-and-swap sætter atomisk en placering til en ny værdi kun, hvis den stadig holder den forventede gamle værdi; ellers fejler den, og du prøver igen. Det er primitiven bag lock-free stacks, queues og tællere.
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));
