Pengaturcaraan lock-free menyelaraskan thread tanpa mutex, menggunakan gelung compare-and-swap (CAS) atomik supaya sekurang-kurangnya satu thread sentiasa membuat kemajuan walaupun yang lain terhenti. Tiada thread boleh disekat oleh yang lain yang memegang lock.
CAS
Compare-and-swap secara atomik menetapkan satu lokasi kepada nilai baharu hanya jika ia masih memegang nilai lama yang dijangka; jika tidak ia gagal dan anda mencuba semula. Ia ialah primitif di sebalik stack, queue, dan pembilang lock-free.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
