Sobes.tech
Junior — Middle

Барои пешгирии истифодаи нусхаи бехатар барои сӯрохиҳо, ки ConcurrentDictionary номида мешавад, бо луғати оддӣ чӣ амалҳо бояд анҷом дода шаванд?

sobes.tech AI

Ҷавоб аз AI

Чтобы использовать обычный словарь (например, Dictionary<TKey, TValue>) в многопоточной среде без перехода на потокобезопасный ConcurrentDictionary, необходимо обеспечить синхронизацию доступа к словарю. Для этого можно:

  • Использовать блокировки (lock) вокруг всех операций чтения и записи в словарь.
  • Применять объекты синхронизации, например, Mutex или Monitor.

Пример с использованием lock:

private readonly Dictionary<int, string> dict = new Dictionary<int, string>();
private readonly object dictLock = new object();

public void AddItem(int key, string value)
{
    lock(dictLock)
    {
        dict[key] = value;
    }
}

public bool TryGetValue(int key, out string value)
{
    lock(dictLock)
    {
        return dict.TryGetValue(key, out value);
    }
}

Таким образом, вы предотвращаете одновременный доступ из разных потоков, избегая состояния гонки и исключений.