Lock-free programming mutexes లేకుండా threads ను సమన్వయం చేస్తుంది, atomic compare-and-swap (CAS) loops ను ఉపయోగిస్తుంది, తద్వారా ఇతరులు నిలిచిపోయినా కనీసం ఒక thread ఎల్లప్పుడూ ముందుకు సాగుతుంది. ఏ thread ను lock పట్టుకున్న మరొకటి block చేయలేదు.
CAS
Compare-and-swap ఒక location ను ఒక new value కు atomic గా set చేస్తుంది, అది ఇప్పటికీ ఆశించిన old value ను కలిగి ఉంటే మాత్రమే; లేకపోతే అది fail అవుతుంది మరియు మీరు retry చేస్తారు. ఇది lock-free stacks, queues, మరియు counters వెనుక ఉన్న primitive.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
