Junior — Middle
82
Какие действия необходимо выполнить с обычным словарём, чтобы избежать использования потокобезопасного варианта ConcurrentDictionary?
Ответ от нейросети
sobes.tech 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);
}
}
Таким образом, вы предотвращаете одновременный доступ из разных потоков, избегая состояния гонки и исключений.