相关疑难解决方法(0)

如何在汇编语言级别实现线程同步?

虽然我熟悉并发编程概念,如互斥和信号量,但我从未理解它们是如何在汇编语言级别实现的.

我想有一组内存"标志"说:

  • 锁A由线程1保持
  • 锁B由螺纹3保持
  • 锁C不被任何线程保持
  • 等等

但是如何在线程之间同步访问这些标志呢?像这个天真的例子只会产生竞争条件:

  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)

concurrency x86 assembly multithreading synchronization

24
推荐指数
2
解决办法
8282
查看次数