The following is an assembly language:
loop:
tsl register, lock
cmp register, #0
jne loopHow to leave region:
move lock, #0
The following is another version of test & set lock (TSL)
:
Special Hardware Instruction: Atomically executed in micro-code.boolean test-and-set(boolean &target)
{
boolean temp = target;
target = true;
return temp;
}boolean lock = false;
while(true)
{
while(test-and-set(lock)) ;
Critical Section
lock = false;
Remainder Section
}