虽然我熟悉并发编程概念,如互斥和信号量,但我从未理解它们是如何在汇编语言级别实现的.
我想有一组内存"标志"说:
但是如何在线程之间同步访问这些标志呢?像这个天真的例子只会产生竞争条件:
mov edx, [myThreadId]
wait:
cmp [lock], 0
jne wait
mov [lock], edx
; I wanted an exclusive lock but the above
; three instructions are not an atomic operation :(
Run Code Online (Sandbox Code Playgroud)