La programmation lock-free coordonne les threads sans mutex, à l'aide de boucles atomiques de compare-and-swap (CAS) pour qu'au moins un thread progresse toujours même si les autres s'arrêtent. Aucun thread ne peut être bloqué par un autre qui détiendrait un verrou.
CAS
Le compare-and-swap affecte atomiquement une nouvelle valeur à un emplacement seulement s'il contient encore l'ancienne valeur attendue ; sinon il échoue et vous réessayez. C'est la primitive derrière les stacks, queues et compteurs lock-free.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atomique, indivisible
else: return false
