簡體   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