繁体   English   中英

无限制,无需等待?

[英]Unbounded and wait-free?

这是ConcurrentLinkedQueue文档的描述:

基于链接节点的无界线程安全队列。 此队列对元素FIFO(先进先出)进行排序。
...
该实现采用有效的“无等待”算法

是否有可能无限制 无需等待
我很确定wait-freedom确保了对任何操作的约束。

我很确定wait-freedom确保了对任何操作的约束。

操作所花费的时间 (或指令数量等)的约束。

在该JavaDoc中,“Unbounded”可能指的是队列可能包含的元素数量

例如,LinkedBlockingDeque的JavaDoc 写道

基于链接节点的可选绑定阻塞双端队列。

可选的容量绑定构造函数参数用作防止过度扩展的方法。 如果未指定,则容量等于Integer.MAX_VALUE。 每次插入时都会动态创建链接节点,除非这会使deque超出容量。

等待自由实际上只意味着在一些有限数量的步骤中操作将如所解释的那样完成

如果每个操作都对算法在操作完成之前将采取的步数进行限制,则算法是等待的

此定义不适用于ConcurrentLinkedQueue 轮询(或放置)队列时,每个线程都有可能无限次失败。 仅此事实告诉我们队列并非真正等待自由。 我相信作者没有在“多处理器编程的艺术”中使用Herlihy的等待定义。

有关更多信息,CLQ使用此处解释的Michael&Scott算法

编辑:刚刚意识到我为M和S队列提供的链接也在API中。 要么应该没事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM