Sobes.tech
Middle

Para que serve o ConcurrentDictionary?

sobes.tech IA

Resposta da IA

ConcurrentDictionary é utilizado para armazenar pares de chave-valor de forma segura para threads. Ele fornece uma adição, remoção e obtenção eficientes de elementos da coleção, acessível simultaneamente por vários threads, sem necessidade de bloqueio explícito.

Principais características:

  • Segurança para threads: Todas as operações que alteram o estado do dicionário (adicionar, remover, atualizar) são atômicas.
  • Desempenho: Utiliza bloqueio de granularidade fina, permitindo que vários threads executem operações em diferentes partes do dicionário ao mesmo tempo.
  • Ausência de bloqueios na leitura: As operações de leitura (GetValueOrDefault, TryGetValue) não bloqueiam operações de escrita.

Exemplos de uso:

  • Cache de dados acessíveis por vários threads.
  • Contadores ou agregadores em aplicações multithread.
  • Implementação de pools de objetos.

Exemplo de adição de elemento:

// Adiciona elemento se a chave não existir
bool added = dictionary.TryAdd("key1", "value1");

Exemplo de obtenção de elemento:

string value;
// Tenta obter o valor pela chave
if (dictionary.TryGetValue("key1", out value))
{
    // Valor obtido
}

Exemplo de atualização ou adição de elemento:

// Adiciona valor se a chave não existir, ou atualiza o existente
dictionary.AddOrUpdate("key1", "newValue", (key, oldValue) => oldValue + newValue);