Ο lock-free programming συντονίζει threads χωρίς mutexes, χρησιμοποιώντας atomic compare-and-swap (CAS) loops ώστε τουλάχιστον ένα thread να προχωρά πάντα ακόμη κι αν τα άλλα κολλήσουν. Κανένα thread δεν μπορεί να μπλοκαριστεί από ένα άλλο που κρατά ένα lock.
CAS
Το Compare-and-swap θέτει ατομικά μια θέση σε μια νέα τιμή μόνο αν αυτή εξακολουθεί να κρατά την αναμενόμενη παλιά τιμή· αλλιώς αποτυγχάνει και κάνεις retry. Είναι το primitive πίσω από τα lock-free stacks, queues και counters.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
