Оптимистично параллельный метод Remove ConcurrentDictionary

Я искал в ConcurrentDictionary метод, который позволяет мне удалить запись по ключу, если и только если значение равно указанному мной, что-то как эквивалент TryUpdate , но для удаления.

Единственный метод, который делает это, кажется, это следующий метод:

ICollection>.Remove(KeyValuePair keyValuePair)

Это явная реализация интерфейса ICollection, другими словами, я должен сначала преобразовать свой ConcurrentDictionary в ICollection, чтобы я мог вызвать Remove.

Remove делает именно то, что я хочу, и в этом приведении тоже нет ничего страшного, также исходный код показывает, что он вызывает частный метод TryRemovalInternal с bool matchValue = true , так что все выглядит красиво и чисто.

Что меня немного беспокоит, так это то, что он не задокументирован как оптимистично параллельный метод Remove для ConcurrentDictionary, поэтому http://msdn.microsoft.com/en-us/library/dd287153.aspx просто дублирует шаблон ICollection, а в Как добавить и удалить элементы из ConcurrentDictionary этот метод также не упоминается.

Кто-нибудь знает, следует ли мне это делать, или есть какой-то другой метод, который мне не хватает?

7
задан Eugene Beresovsky 4 January 2012 в 07:46
поделиться