Являются ли generic.list и generic.dictionary потокобезопасными в .net - PullRequest
6 голосов
/ 23 января 2012

Как мы узнаем, является ли метод потокобезопасным или нет

Например, если я проверяю http://msdn.microsoft.com/en-us/library/3wcytfd1.aspx, нет ничего, что указывало бы на его потокобезопасность.

Ответы [ 2 ]

10 голосов
/ 23 января 2012

Нет, они не являются поточно-ориентированными (без выполнения собственной блокировки).

Вместо этого используйте одну из Concurrent коллекций.

Thread-SafeКоллекции

Пространство имен System.Collections.Concurrent предоставляет несколько потоковобезопасных классов коллекций, которые следует использовать вместо соответствующих типов в пространствах имен System.Collections и System.Collections.Generic.несколько потоков обращаются к коллекции одновременно.

3 голосов
/ 23 января 2012

Документация для всего класса List<T> содержит сегмент по безопасности потоков:

Открытые статические (Shared в Visual Basic) члены этого типа являются поточно-ориентированными. Ни один из членов экземпляра не гарантированно является потокобезопасным.

...