2011-06-28 48 views
1

有3個主題。它們中的每一個都使用其自己的一組字典鍵來工作(讀取,寫入)。所以鍵對不同的線程是相互排斥的。還有多個只讀取數據的線程。ConcurrentDictionary和Disjoint Sets of Keys

哪這兩種方法在速度方面是更有效的:

  1. 創建單個詞典
  2. (類型ConcurrentDictionary)創建一個單獨的字典(類型ConcurrentDictionary)爲每個3個線程的。

乍一看,第二種方法更高效,因爲沒有書寫爭用。這裏有什麼陷阱嗎?如果兩種方法之間的差異不顯着,那麼我會採用第一種方法。

+2

其他讀取數據的線程需要做什麼?你有沒有嘗試過,並測量了差異?你有沒有具體的績效目標? –

+0

其他線程遍歷字典讀取值。我還沒有嘗試過任何一個。我只想知道在使用單個'ConcurrentDictionary'字典時,對於不同的線程是否有不相交的鍵集合的好處。顯然,如果整個字典在寫入時被鎖定,那麼沒有任何好處。 AFAIK'ConcurrentDictionary'不以這種方式工作。 –

回答

0

第二種方法更高效。無論如何,擁有共享狀態並不是一個好主意。