La instrucción compare-and-swap (CAS) es una generalización de la instrucción test-and-set. La instrucción trabaja con dos variables, les llamamos C(de compare) y S (de swap) Se intercambia el valor en la memoria por S si el valor en la memoria es igual que C.
Es la operación que se usa por ejemplo en los procesadores de Intel y es la base para facilitar la concurrencia en la máquina virtual de Java 1.5 para dicha familia de procesadores.
Con dicha instrucción se puede realizar los protocolos de entrada y salida. ¿Cómo? (refTareaExclusionPrácticas).
Existe también una mejora del CAS, llamado double-compare-and-swab, que realiza dos CAS normales a la vez, el código, expresado a alto nivel, sería:
if C1 equal to V1 and C2 equal to V2
then
set C1 to S1
set C2 to S2
return true
else
return false