Concurrency 无锁和无障碍的区别是什么?

Concurrency 无锁和无障碍的区别是什么?,concurrency,terminology,lock-free,Concurrency,Terminology,Lock Free,我正在阅读(TM),我正在阅读的一篇论文说[]: 事实上,正是两种非阻塞算法,即无障碍DSTM和无锁FSTM,在过去十年中为STM研究注入了活力 我的印象是锁意味着阻碍。显然,我错了 术语“无锁”和“无障碍物”之间有什么区别?以下是Herlihy&Shavit的定义 如果方法保证 每个调用都会完成它的执行 在有限的步骤中 方法 是无锁的,如果它保证 无限频繁地调用某个方法 在有限的步骤中完成 方法是无障碍的,如果 在中执行的任何点 隔离,它在有限的时间内结束 步骤数(如果没有其他线程执行步骤,则

我正在阅读(TM),我正在阅读的一篇论文说[]:

事实上,正是两种非阻塞算法,即无障碍DSTM和无锁FSTM,在过去十年中为STM研究注入了活力

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


术语“无锁”和“无障碍物”之间有什么区别?

以下是Herlihy&Shavit的定义

如果方法保证 每个调用都会完成它的执行 在有限的步骤中

方法 是无锁的,如果它保证 无限频繁地调用某个方法 在有限的步骤中完成

方法是无障碍的,如果 在中执行的任何点 隔离,它在有限的时间内结束 步骤数(如果没有其他线程执行步骤,则方法调用以隔离方式执行)


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

我从实用的角度描述了等待自由、无锁自由、无障碍自由、阻塞保证:根据Maurice Herlihy etal@OPODIS'2011[图一](),恐怕并非所有无锁方法都是无障碍的。