Sobes.tech
Middle

What is the purpose of ConcurrentDictionary?

sobes.tech AI

Answer from AI

ConcurrentDictionary is used for thread-safe storage of key-value pairs. It provides efficient addition, removal, and retrieval of elements from a collection that is accessible by multiple threads simultaneously, without the need for explicit locking.

Main features:

  • Thread safety: All operations that modify the dictionary's state (adding, removing, updating) are atomic.
  • Performance: Uses fine-grained locking, allowing multiple threads to perform operations on different parts of the dictionary simultaneously.
  • No locks during read operations: Read operations (GetValueOrDefault, TryGetValue) do not block write operations.

Examples of usage:

  • Caching data accessible by multiple threads.
  • Counters or aggregators in multi-threaded applications.
  • Implementation of object pools.

Example of adding an element:

// Adding an element if the key does not exist
bool added = dictionary.TryAdd("key1", "value1");

Example of retrieving an element:

string value;
// Attempt to get the value by key
if (dictionary.TryGetValue("key1", out value))
{
    // Value retrieved
}

Example of updating or adding an element:

// Adds a value if the key does not exist, or updates the existing one
dictionary.AddOrUpdate("key1", "newValue", (key, oldValue) => oldValue + newValue);