Lock-free programming threads ਨੂੰ mutexes ਤੋਂ ਬਿਨਾਂ ਤਾਲਮੇਲ ਕਰਦਾ ਹੈ, atomic compare-and-swap (CAS) loops ਵਰਤ ਕੇ ਤਾਂ ਜੋ ਘੱਟੋ-ਘੱਟ ਇੱਕ thread ਹਮੇਸ਼ਾ ਤਰੱਕੀ ਕਰੇ ਭਾਵੇਂ ਦੂਜੇ ਰੁਕ ਜਾਣ। ਕੋਈ thread ਕਿਸੇ ਹੋਰ ਦੁਆਰਾ lock ਰੱਖਣ ਨਾਲ block ਨਹੀਂ ਹੋ ਸਕਦਾ।
CAS
Compare-and-swap ਇੱਕ location ਨੂੰ atomic ਤੌਰ 'ਤੇ ਇੱਕ ਨਵੇਂ value ਉੱਤੇ ਸੈੱਟ ਕਰਦਾ ਹੈ ਸਿਰਫ਼ ਤਾਂ ਜੇ ਇਹ ਅਜੇ ਵੀ ਉਮੀਦ ਕੀਤਾ ਪੁਰਾਣਾ 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
