我正在阅读Transactional Memory (TM),我正在阅读的一篇论文说[ 1 ]:
事实上,在过去的十年里,是两种非阻塞算法,即无阻塞 DSTM 和无锁 FSTM 重新振兴了 STM 研究。
我的印象是锁定意味着阻塞。显然,我错了……
术语“无锁”和“无障碍”有什么区别?
我正在阅读Transactional Memory (TM),我正在阅读的一篇论文说[ 1 ]:
事实上,在过去的十年里,是两种非阻塞算法,即无阻塞 DSTM 和无锁 FSTM 重新振兴了 STM 研究。
我的印象是锁定意味着阻塞。显然,我错了……
术语“无锁”和“无障碍”有什么区别?
以下是 Herlihy & Shavit 的The Art Of Multiprocessor Programming中的定义。
如果一个方法保证每个调用在有限数量的步骤中完成其执行,则该方法是无等待的。
一个方法是无锁的,如果它保证某个方法调用在有限数量的步骤中无限频繁地完成。
一个方法是无阻塞的,如果从它独立执行之后的任何点开始,它在有限数量的步骤中完成(如果没有其他线程采取步骤,方法调用将独立执行)。
所有无等待的方法都是无锁的,所有无锁的方法都是无阻塞的。