我有一个控制器类,看起来像这样的实例属性一些代码:volatile关键字,并锁定了实例属性
public class Controller
{
private static volatile Controller _instance;
private static object syncRoot = new Object();
private Controller() { }
public static Controller Instance
{
get
{
if (_instance == null)
{
lock (syncRoot)
{
if (_instance == null)
_instance = new Controller();
}
}
return _instance;
}
}
public void Start()
{
}
}
通过msdn docs on the volatile keyword看完后,我不知道,如果第二个空检查是多余的,也不论是否更好的方式来写,吸气将是这样的:
get
{
lock (syncRoot)
{
if (_instance == null)
_instance = new Controller();
}
return _instance;
}
这两种实现的是多线程性能和DRY'ness(去除冗余)好?
这不是,你想在锁定 – 2011-01-31 19:40:44