大多数'无锁'代码其实不是无锁的

💡 原文中文,约200字,阅读约需1分钟。
📝

内容提要

线程 B 发现线程 A 有未完成的操作时,会协助 A 完成后再执行自己的任务。Michael-Scott 队列的入队操作是一个经典例子,B 会先推进队尾指针,然后尝试入队。

🎯

关键要点

  • 线程 B 发现线程 A 有未完成的操作时,会协助 A 完成后再执行自己的任务。
  • 实现手段是 helping protocol。
  • Michael-Scott 队列的入队操作是一个经典例子。
  • 如果发现队尾指针落后,当前线程会先推进队尾指针,再尝试自己的入队。
➡️

继续阅读