[英]“Any public static members of XmlDocument are thread safe. Any instance members are not guaranteed to be thread safe” : yes, but
[英]Are public static members (properties) of static class thread safe
我有一个静态课程示例
public static class SampleClass
{
private static readonly string _personName;
private static readonly string _country;
static SampleClass()
{
_personName = "JourneyMan";
_country = "Zee";
System.Threading.Thread.Sleep(5000);
}
public static string PersonName
{
get { return _personName; }
}
public static string Country
{
get { return _country; }
}
}
我故意在静态构造函数中引入了Thread.Sleep。
我编写了一个示例应用程序,其中两个线程在ManualResetEvent上等待。 我尝试模拟一种情况,其中一个线程尝试查询属性并正在执行静态构造函数并进入睡眠状态,另一个线程可以访问第二个属性并返回null值吗?
但是根据我的观察,除非构造完成,否则第二个线程无法获取属性值。
这是为我们处理的吗? 还是我做错了什么?
因此,在上述情况下,我可以假设不需要任何锁定来确保静态类的构建完成吗?
谢谢
静态构造函数是线程安全的,静态属性不是。
在创建类的任何实例或访问任何静态成员之前,保证静态构造函数在每个应用程序域仅运行一次。 http://msdn.microsoft.com/en-us/library/aa645612.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.