some atomic memory operations
CMPXCHG - Comapre and Exchange
[lock] cmpxchg reg, reg/mem
^ ^ ^
| | |
prefix SRC DEST
if al == dest:
ZF <- 1
DEST <- SRC
else:
ZF <- 0
AX <- DEST
e.g.
mov $0, %al
lock cmpxchg %edx, some_lock