.NET Dictionary: безопасен только перечисляющий поток? - PullRequest
4 голосов
/ 04 февраля 2009

Безопасно ли просто перечислять словарь .NET из нескольких потоков?

Никаких изменений в Словаре не происходит вообще.

Ответы [ 2 ]

10 голосов
/ 04 февраля 2009

Да, в этом случае перечисление является потокобезопасным, поскольку в начале цикла foreach создается новый экземпляр перечислителя с неявным вызовом GetEnumerator.

9 голосов
/ 04 февраля 2009

Да ... Ну почти:

Словарь <(Of <(TKey, TValue>)>) может поддерживать несколько читателей одновременно, пока Коллекция не изменена. Даже так, перечисление через коллекцию по сути не потокобезопасный процедура. В редком случае, когда перечисление конкурирует с записью доступы, коллекция должна быть заблокирован во время всего перечисления. Чтобы разрешить доступ к коллекции несколькими потоками для чтения и писать, вы должны реализовать свой собственный синхронизации.

( ссылка )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...