Lock-free programming threads کو mutexes کے بغیر مربوط کرتی ہے، atomic compare-and-swap (CAS) loops استعمال کرتے ہوئے تاکہ کم از کم ایک thread ہمیشہ آگے بڑھے چاہے دوسری رک جائیں۔ کوئی thread کسی دوسری کے lock پکڑنے سے block نہیں ہو سکتی۔
CAS
Compare-and-swap atomically ایک location کو ایک نئی value پر تب ہی set کرتی ہے جب وہ اب بھی متوقع پرانی value رکھتی ہو؛ ورنہ یہ ناکام ہو جاتی ہے اور آپ دوبارہ کوشش کرتے ہیں۔ یہ lock-free stacks، queues، اور counters کے پیچھے primitive ہے۔
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
