spinlock x86 en utilisant cmpxchg

Je suis nouveau à l'aide de gcc assembly en ligne, et je me demandais si, sur un système x86 multi-core de la machine, un spinlock (sans conditions de course) pourrait être mis en œuvre en tant que (AT&T syntaxe):

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

spin_unlock: 
verrouillage mov 0 [lock_addr] 
ret 

source d'informationauteur ManRow