От: | barney | ||
Дата: | 16.05.18 18:12 | ||
Оценка: |
spin_outer:
cmp flag, 1
je spin_outer // waiting until 0
spin_inner:
test-and-set ax, flag //executed atomicly
// {
// mov ax, flag // fetch current value to ax
// mov flag, 1 // set flag to 1
// }
cmp ax, 1
jne spin_inner // if old value was 0
// now in critical section
call do_work
mov flag, 0 // clean flag
leave: