Словарь может поддерживать несколько читателей одновременно, если коллекция не изменяется. Даже в этом случае перечисление через коллекцию по своей сути не является поточно-ориентированной процедурой. В редких случаях, когда перечисление соперничает с доступом на запись, коллекция должна быть заблокирована на протяжении всего перечисления. Чтобы разрешить доступ к коллекции нескольким потокам для чтения и записи, вы должны реализовать свою собственную синхронизацию.
Это то, что говорит MSDN.
Я не хочу использовать ConcurrentDictionary, если в этом нет необходимости
Я предполагаю, что если есть только один поток, выполняющий операции записи на Dictionary<T,K>
, для других потоков безопасно выполнять простые операции чтения (например, TryGetValue
не перечисление) одновременно без получения блокировки, я прав?