2011-04-30 141 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

相關問題