Комментарии 6
Расстраивает то, что в методе GetOrAdd(key, valueFactory) переданная функция valueFactory может выполниться в разных потоках для одного и того же ключа. Хотелось бы блокировки по ключу.
0
Есть такой метод
TValue GetOrAdd(TKey key, TValue value)
он является атомарной операцией.+1
Знаю. Просто для реализации, например, кеша требуется передавать не готовое значение, а фабрику.
0
«Отсюда и получается скорость доступа — O(1)» Строго говоря, тут не будет точного О(1), но очень близко. Все зависит от качества хеш-функции типа-аргумента.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Concurrency структуры в .net. ConcurrentDictionary изнутри