Lock-free programming mutex ছাড়াই thread সমন্বয় করে, atomic compare-and-swap (CAS) loop ব্যবহার করে যাতে অন্যরা থমকে গেলেও অন্তত একটি thread সবসময় অগ্রগতি করে। কোনো thread একটি lock ধরে রাখা অন্যটি দ্বারা block হতে পারে না।
CAS
Compare-and-swap একটি location-কে একটি নতুন মানে atomically সেট করে কেবল যদি এটি এখনও প্রত্যাশিত পুরনো মান ধরে রাখে; অন্যথায় এটি fail করে এবং আপনি retry করেন। এটি lock-free stack, queue, এবং counter-এর পিছনের primitive।
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));
