La instrucción test-and-set (TAS) implementa una comprobación del contenido de una variable en la memoria al mismo tiempo que varía su contenido en caso que la comprobación se realizó con exito.
Así se puede realizar la exclusión mutua con
Initially: vi is equal false
C is equal true
Loop:
non-critical section
loop
if C equals true ; atomic test-and-set
set C to false and exit
endloop
set vi to true
critical section
set vi to false
set C to true;
En caso de un sistema multi-procesador hay que tener cuidado que la operación test-and-set esté realizada cerca de la memoria compartida.