Lock-free programming ஆனது mutexes இல்லாமல் threads-ஐ ஒருங்கிணைக்கிறது, atomic compare-and-swap (CAS) loops-ஐப் பயன்படுத்தி, எனவே மற்றவை தேங்கினாலும் குறைந்தபட்சம் ஒரு thread எப்போதும் முன்னேற்றம் அடைகிறது. ஒரு lock-ஐ வைத்திருக்கும் மற்றொன்றால் எந்த thread-ம் block செய்யப்பட முடியாது.
CAS
Compare-and-swap ஆனது ஒரு location-ஐ ஒரு புதிய value-க்கு atomic-ஆக அமைக்கிறது, அது இன்னும் எதிர்பார்க்கப்பட்ட பழைய value-ஐ வைத்திருந்தால் மட்டுமே; இல்லையெனில் அது தோல்வியடைந்து நீங்கள் மீண்டும் முயற்சிக்கிறீர்கள். இது lock-free stacks, queues, மற்றும் counters-க்குப் பின்னால் உள்ள primitive ஆகும்.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomic, indivisible
else: return false
