Являются ли статические классы потокобезопасными

Я прошел через msdn, где написано, что все статические классы являются потокобезопасными. Эта статья предназначена для версии 1.1 ...

http://msdn.microsoft.com/en-us/library/d11h6832(v=vs.71).aspx

Все общедоступные статические члены (методы, свойства, поля и события) в .NET Framework поддерживают одновременный доступ в многопоточной среде. Следовательно, любой статический член .NET Framework можно одновременно вызывать из двух потоков без возникновения условий гонки, взаимоблокировок или сбоев.


person slash shogdhe    schedule 30.04.2011    source источник
comment
В CLR нет скрытого волшебства, которое делает доступный для записи член потокобезопасным. См. здесь.   -  person Frédéric Hamidi    schedule 30.04.2011
comment
@Paul Keister, вы хотите сказать, что все статические методы, свойства, поля и события являются потокобезопасными, как указано в статье ....   -  person slash shogdhe    schedule 30.04.2011


Ответы (2)


Нет, он не говорит, что статические классы являются потокобезопасными, он говорит, что общедоступные статические члены являются потокобезопасными.

Например, для статических методов это означает, что они используют только данные, которые вы отправляете в качестве параметров, или другие статические элементы, которые также являются потокобезопасными.

Вам не нужно синхронизировать вызовы статических методов, если это не требуется для защиты данных, которые вы отправляете в метод.

person Guffa    schedule 30.04.2011

Это означает, что все статические члены в .NET framework спроектированы потокобезопасным способом. Это означает, что все статические методы / поля / свойства, разработанные Microsoft для .NET Framework. Если вы хотите использовать статический член, предоставляемый самой .NET Framework, вы можете считать его потокобезопасным и использовать его как таковой. Тем не менее, я бы все еще с подозрением относился к достоверности этого утверждения и предполагал, что безопасность не связана с потоками, пока не будет доказано обратное.

Любые классы, которые вы пишете (статические или нет) сами и которые имеют статические члены, могут быть или не могут быть потокобезопасными в зависимости от того, как вы их пишете. Это не будет волшебным образом потокобезопасным только потому, что это статический метод / класс.

Также посмотрите на это, чтобы понять, что такое статические члены и что такое статические классы:

Статические классы и статические члены

person Can Gencer    schedule 30.04.2011