我想了解一個ConcurrentDictionary
和(它是O(logarithmic(n))
)的計算複雜性,是ConcurrentDictionary只是一個SortedList
的併發同步實現嗎?還是這些數據結構有所不同?彼此之間?是ConcurrentDictionary,SortedList的「併發」版本嗎?
回答
ConcurrentDictionary<T,U>
是Dictionary<T,U>
的併發版本。它不會像SortedList<T,U>
那樣按鍵排序。複雜性與Dictionary<T,U>
的複雜性密切相關,因此提取方法O(1)。
SortedList<T,U>
對於大多數讀取操作而言,它具有O(log n)複雜度,因爲它正在走內部排序結構。
我認爲ConcurrentDictionary<K,V>
是一個線程安全的模擬Dictionary<K,V>
和都應該有複雜性O(1)。他們不提供關鍵排序,訂單不能保證。
說'ConcurrentDictionary
@ 280Z28:我特意檢查了[MSDN](http://msdn.microsoft.com/en-us/library/dd287191.aspx),並將其描述爲:「表示**線程安全**密鑰集合/值對可以被多個線程同時訪問「。 – abatishchev
我應該補充一點,我沒有投票給你,並且你沒有錯。我只是指出,所給出的其他答案更具體一些。 :) –
- 1. 當迭代ConcurrentDictionary並且只讀時,是否鎖定了ConcurrentDictionary?
- 2. ConcurrentDictionary樂觀併發Remove方法
- 3. iOS併發/版本分佈
- 4. C#Linq SortedList篩選到SortedList
- 5. ConcurrentDictionary中的AddOrUpdate線程安全嗎?
- 6. 這是Firefox開發者版本中的錯誤嗎?
- 7. 多個併發的Websphere版本
- 8. 併發版本的LRU緩存
- 9. 多級ConcurrentDictionary仍然是線程安全的嗎?
- 10. 是對ConcurrentDictionary值線程安全的linq查詢嗎?
- 11. jQGrid asp.net mvc版本是免費的嗎?
- 12. 是.NET Framework v4.0.30128的最新版本嗎?
- 13. 是MEF微軟的Lua版本嗎?
- 14. 這些是mgo的相同版本嗎?
- 15. 我的Java版本是5嗎?
- 16. 在發佈父級版本時發佈的是UIView的子視圖嗎?
- 17. ConcurrentDictionary&atomic operations-有時需要Lock嗎?
- 18. MonoTouch中的ConcurrentDictionary
- 19. 補丁發佈後將版本合併到主版本git
- 20. Q/A,發佈版本VS調試版本,並斷言
- 21. 從ConcurrentDictionary
- 22. 如何將SortedList轉換爲SortedList <>
- 23. 是不是SortedList應該比Dictionary慢?
- 24. 非併發版本使用DevEnv.exe
- 25. 是否有更快的方式REGEX SortedList?
- 26. Wordpress版本2.9.2錯誤或是我嗎?
- 27. CUDA版本比CPU版本慢嗎?
- 28. Visual C++ 2012可再發行版向後兼容2010版本嗎?
- 29. XAML有版本嗎?
- 30. SVN:版本庫結構2並行版本的主要版本?
有沒有辦法用併發數據結構來實現'O(log n)'? – Killrawr
@Killrawr'O(1)'通常比較好 - 你爲什麼要達到'O(log n)'? –
我認爲'O(log n)'搜索比'O(n)'快,從我的理解中就像搜索一本教科書,並在每次迭代中切半本書,直到找到結果。直到找到結果爲止,而不是搜索每本書的頁面。 – Killrawr