ConcurrentDictionary Pitfall - As fábricas de delegados de GetOrAdd e AddOrUpdate são sincronizadas?
A documentação deConcurrentDictionary
não explícito estado, então eu acho que não podemos esperar que os delegadosvalueFactory
eupdateValueFactory
ter sua execução sincronizada (de operações GetOrAdd () e AddOrUpdate () respectivamente).
Então, acho que não podemos implementar o uso de recursos dentro deles que precisam de controle simultâneo sem implementar manualmente nosso próprio controle concorrente, talvez apenas usando[MethodImpl(MethodImplOptions.Synchronized)]
sobre os delegados.
Estou certo? Ou o fato de queConcurrentDictionary
é thread-safe, podemos esperar que as chamadas para esses delegados são automaticamente sincronizadas (thread-safe também)?