В лекции разберём, почему обычные коллекции вроде
List<T> и
Dictionary<TKey, TValue> ломаются в многопоточности (гонки данных), почему одного
lock часто недостаточно, и как потокобезопасные коллекции из
System.Collections.Concurrent решают эти проблемы. Рассмотрим ключевые структуры:
ConcurrentQueue<T>,
ConcurrentStack<T>,
ConcurrentBag<T>,
ConcurrentDictionary<TKey, TValue>, их сценарии (producer–consumer, кэширование, пулы объектов) и критерии выбора.