Когда init-time, я добавил некоторые значения в словарь.C# когда я использую только TryGetValue в словаре .. это поточно-безопасный?
После этого мне нужно только TryGetValue.
В этом случае мне нужно заблокировать TryGetValue?
Когда init-time, я добавил некоторые значения в словарь.C# когда я использую только TryGetValue в словаре .. это поточно-безопасный?
После этого мне нужно только TryGetValue.
В этом случае мне нужно заблокировать TryGetValue?
Да, это поточно, если вы только читать/использовать TryGetValue
:
Dictionary<TKey, TValue>
может поддерживать несколько читателей одновременно, , пока коллекция не измененными. Тем не менее, перечисление через коллекцию по существу не является потокобезопасной процедурой. В редкий случай, когда перечисление связано с обращением к записи, коллекция должна быть заблокирована во время всего перечисления. Чтобы разрешить доступ к коллекции несколькими потоками для чтения и записи, вы должны реализовать свою собственную синхронизацию.
Чтение a Словарь после популяции является потокобезопасным.
Использовать ConcurrentDictionary Класс для обеспечения безопасности потоков в случаях использования, когда вам нужно читать и писать.
Из MSDN:
Представляет поточно-коллекцию пар ключ/значение, которое можно получить доступ несколькими потоками одновременно.
Пространство имен:
System.Collections.Concurrent Монтаж: mscorlib (в mscorlib.dll)
Я думаю, что он должен быть потокобезопасным, но, пожалуйста, для параллельных сценариев используются параллельные структуры данных. – tym32167
Читайте на всегда потокобезопасном, это напишите, что создает проблему –