Lukkovapaa ohjelmointi koordinoi säikeitä ilman mutexeja käyttäen atomisia compare-and-swap (CAS) -silmukoita niin, että ainakin yksi säie etenee aina vaikka toiset jumittuisivat. Mikään säie ei voi olla toisen lukkoa pitävän säikeen estämä.
CAS
Compare-and-swap asettaa muistipaikan uuteen arvoon atomisesti vain, jos se yhä pitää odotettua vanhaa arvoa; muuten se epäonnistuu ja yrität uudelleen. Se on lukkovapaiden pinojen, jonojen ja laskureiden takana oleva primitiivi.
CAS(addr, expected, new):
if *addr == expected: *addr = new; return true # atominen, jakamaton
else: return false
