自旋锁

形象的逻辑如下:
image.png

解读
  • 只有第一个人能够得到 A 锁,其他人都得不到 A 锁。第一人得到 A 的时候,会把自己手里的标识与 A 进行交换——此时桌上就不是 A 了;
  • 其他人就会尝试,如果发现不是 A,就不能交换,直到第一个人把锁放回来;
  • 在单 CPU 上,如果第一个线程在释放锁之前就 crash(例如返回了,return 1) 了,就会造成死锁——占用 CPU 不放手。所以,往往需要使用一个定时器定时的切换线程

自旋锁的逻辑是如下述代码所示:
自旋锁的代码实现