299 shaares
2 results
tagged
lockfree
該網站是專門介紹鎖無關算法中的隊列的目錄。它提供了關於多種鎖無關隊列的信息,並分類為SPSC (單生產者單消費者)、MPSC (多生產者單消費者)、SPMC (單生產者多消費者)和MPMC (多生產者多消費者)。您可以在這個網站中查看有關不同類型隊列的詳細信息【74†(來源)】。
該網頁是一個關於SPMC (Single Producer, Multiple Consumer) 隊列的討論,由Rajiv Kurian於2013年12月23日開始。他描述了一個用例,其中一個線程讀取網絡字節並生成工作,而多個工作線程實際完成工作。他首先嘗試使用多個SPSC (Single Producer, Single Consumer) 環形緩衝區來分發工作,但這導致了不平衡的隊列,一些工作線程被餓死,而另一些則有太多工作。
他考慮了以下幾個選項:
- 使用SPMC環形緩衝區,工作線程競爭獲得環形緩衝區上的一個槽,然後完成他們的工作。
- 使用某種工作請求設計,特別是在大多數工作線程繁忙時沒有爭用的情況下,這似乎是一個不錯的模式。
- 建立請求的成本模型,例如,對於圖像處理應用程序,可以在啟動時運行一個階段,檢查每個過濾器需要多長時間,並根據不同大小的圖像建立成本模型。
另一個參與者提到了“經典”工作竊取技術,並建議考慮使用高效的SPMC隊列,因為它將更簡單。他還提供了一個鏈接,指向1024核心網站上有界MPMC (Multiple Producer, Multiple Consumer) 隊列的討論,並建議從中移除CAS (Compare-and-Swap) 操作,因為只有一個生產者。他還提到了Chris的修改,儘管該鏈接無法直接訪問,但它可能是基於另一個討論的【62†(來源)】。
你可以通過這個鏈接訪問1024核心網站上有界MPMC隊列的討論【66†(來源)】。在這個討論中,你可能會找到一些與SPMC隊列相關的實用信息和範例。