Безопасность потоков словаря <TKey, TValue>
Если я инициализирую общий словарь один раз, и дальнейшие добавления/обновления/удаления не разрешены, безопасно ли иметь несколько потоков, читающих его без блокировки (если предположить, что словарь инициализирован до начала чтения)?
В справочной системе есть примечание к неосновной HashTable, которая гласит, что она безопасна для нескольких читателей, но я не видел подобного не для Generic Dictionary
Ответы
Ответ 1
Для вашей будущей ссылки документация находится здесь:
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
В нем говорится:
Словарь может поддерживать несколько считывателей одновременно, пока коллекция не модифицировано. Даже так, перечисление через коллекцию по существу не является потокобезопасным процедура. В редком случае, когда перечисление связано с записью доступа, сбор должен быть заблокирован во время всего перечисления. Чтобы доступ к коллекции был доступен несколькими потоками для чтения и писать, вы должны реализовать свои собственные синхронизации.
Ответ 2
Да, это безопасно, если вы больше не модифицируете словарь. Безопасность потоков - это только проблема сценариев чтения/записи