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