Ловушка ConcurrentDictionary - Синхронизированы ли фабрики делегатов из GetOrAdd и AddOrUpdate?
ДокументацияConcurrentDictionary
не является явным состоянием, поэтому я думаю, мы не можем ожидать, что делегатыvalueFactory
а такжеupdateValueFactory
синхронизировать их выполнение (from GetOrAdd() and AddOrUpdate() operations respectively).
Итак, я думаю, что мы не можем реализовать использование ресурсов внутри них, которые нуждаются в параллельном управлении, без ручной реализации нашего собственного параллельного управления, возможно, просто используя[MethodImpl(MethodImplOptions.Synchronized)]
над делегатами.
Я прав? Или тот факт, чтоConcurrentDictionary
является ли потокобезопасным, мы можем ожидать, что вызовы этих делегатов автоматически синхронизируются (потокобезопасные тоже)?