Sobes.tech
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, что может привести к блокировкам и снижению производительности.