无锁和无阻碍有什么区别?

Nat*_*man 11 concurrency terminology lock-free

我正在读TM,而我正在读的其中一篇论文说[ 1 ]:

实际上,这是两个非阻塞算法,无障碍DSTM和无锁FSTM,在过去十年中重新激活了STM研究.

我的印象是锁意味着阻碍.显然,我错了......

有什么条款"之间的差异无锁 "和" 梗阻自由 "?

Bin*_*mas 5

以下是Herlihy&Shavit的多处理器编程艺术的定义.

如果一个方法保证每个调用在有限的步骤中完成其执行,则该方法是无等待的.

如果方法保证无限次地某些方法调用在有限数量的步骤中完成,则该方法是无锁的.

如果从单独执行的任何点开始,它将以有限的步骤完成(如果没有其他线程采取步骤,方法调用将独立执行),则该方法是无障碍的.

所有无等待方法都是无锁的,所有无锁方法都是无障碍的.

  • 根据 Maurice Herlihy 等人@OPODIS 2011 年发表的论文[“关于进步的本质”[图。1]](http://www.cs.tau.ac.il/~shanir/progress.pdf),恐怕不是“所有无锁方法都是无阻塞的”。 (2认同)