我在客戶端(生產者)和服務器端的一個線程(消費者)8線程什麼是更快的一個併發隊列或8個無鎖隊列?
消費者線程正在旋轉檢查新數據到達。我有兩個選擇來實現這一點:
使用一個concurrent queue,所有8個生產張貼到同一個隊列,服務器自旋和
try_pop
它使用8無鎖single producer single consumer queue。每個生產者發佈自己的隊列,但消費者應該檢查8個查詢,而不是一個。
因爲我認爲檢查8個無鎖查詢必須比檢查一個阻塞隊列快得多(因爲阻塞是昂貴的!)。所以我傾向於使用8 spsc_queue。如果我是對的,你能提出什麼建議?
不知道。當你測試每個選項時哪個更快? – admdrew 2014-08-28 19:33:50
您可以通過不旋轉來加快速度。 – juanchopanza 2014-08-28 19:46:15
您需要執行多少次測試以確保法拉利比驢子快? – javapowered 2014-08-28 19:47:34