2011-04-30 142 views
11

我已经通过了msdn,它写了所有静态类都是线程安全的。那么这文章是一个多线程环境中的.NET框架支持的并发访问中意味着1.1版本...静态类是否是线程安全的

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

所有公共静态成员(方法,属性,字段和事件)。因此,可以从两个线程同时调用任何.NET Framework静态成员,而不会遇到竞争条件,死锁或崩溃。

+3

什么是你真正的问题? – Achim 2011-04-30 06:17:33

+1

*在CLR中没有任何隐藏的魔法使得可写成员是线程安全的。*参见[这里](http://social.msdn.microsoft.com/Forums/en/clr/thread/2de53f4d-baf2-4b65 -9d0f-82508600fc70)。 – 2011-04-30 06:21:16

+0

@Paul Keister,你的意思是说,所有的静态方法,属性,字段和事件是线程安全的,根据文章.... – 2011-04-30 06:40:11

回答

8

不,它没有说静态类是线程安全的,它说公共静态成员是线程安全的。

对于静态方法,例如,这意味着它们只使用您发送的数据作为参数或其他线程安全的静态成员。

除非需要保护发送到方法中的数据,否则不必将调用同步到静态方法。

11

这是什么意思,在.NET框架内的所有静态成员都是以线程安全的方式设计的。这意味着Microsoft为.NET Framework开发的所有静态方法/字段/属性。如果你想使用.NET Framework本身提供的静态成员,那么你可以假设它是线程安全的并且使用它。尽管如此,我仍然怀疑该陈述的有效性,并且假定非线程安全,直到证明为止。

你写的(静态的,或者不是)任何类自己,并且具有静态成员可能或可能不会取决于你如何写他们线程安全的。它不会因为它是一个静态方法/类而神奇地变为线程安全的。

也看看这个理解什么是静态成员,什么是静态类:

Static Classes and Static Members

+0

链接doco 404s – 2017-11-27 14:37:39

相关问题