спин-блокировка x86 с использованием cmpxchg

Я новичок в использовании встроенной сборки gcc, и мне было интересно, можно ли на многоядерной машине x86 реализовать спин-блокировку (без условий гонки) как (с использованием синтаксиса AT&T):

spin_lock:
mov 0 eax
lock cmpxchg 1 [lock_addr]
jnz spin_lock
ret

spin_unlock:
lock mov 0 [lock_addr]
ret
14
задан ManRow 4 August 2011 в 02:21
поделиться