Middle
Има статичен речник, и искаме да пишем в него от различни нишки. Как е най-добре да го направим?
sobes.tech AI
Отговор от 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, что может привести к блокировкам и снижению производительности.