Lock-free programming mengoordinasikan thread tanpa mutex, menggunakan loop atomic compare-and-swap (CAS) sehingga setidaknya satu thread selalu membuat kemajuan bahkan jika yang lain macet. Tidak ada thread yang dapat terblokir oleh thread lain yang memegang sebuah lock.
CAS
Compare-and-swap secara atomik menetapkan sebuah lokasi ke nilai baru hanya jika ia masih memegang nilai lama yang diharapkan; jika tidak ia gagal dan Anda coba lagi. Ini adalah primitive di balik stack, queue, dan counter lock-free.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
