Back to questions
OZON
Middle
6
Есть статичный словарь, мы хотим писать в него из разных потоков. Как лучше это сделать?
Companies where asked
Answer from AI
sobes.tech AI
Для безопасной записи в статичный словарь из разных потоков в C# лучше использовать класс ConcurrentDictionary<TKey, TValue>. Он специально разработан для потокобезопасной работы с коллекциями и позволяет одновременно читать и писать без блокировок, что повышает производительность по сравнению с обычным словарём с внешней синхронизацией.
Пример использования:
using System.Collections.Concurrent;
static class MyStaticClass
{
private static ConcurrentDictionary<string, int> _dict = new ConcurrentDictionary<string, int>();
public static void AddOrUpdate(string key, int value)
{
_dict.AddOrUpdate(key, value, (k, oldValue) => value);
}
public static bool TryGetValue(string key, out int value)
{
return _dict.TryGetValue(key, out value);
}
}
Если по каким-то причинам нужно использовать обычный Dictionary, то придётся оборачивать доступ к нему в блоки lock, что может привести к блокировкам и снижению производительности.