У меня есть кэш объектов, который реализует шаблон проектирования Singleton. Мой подход к singleton всегда ленился загружать статический экземпляр, когда свойство сначала получает доступ.Static Constructor & Singleton class
public static Widget
{
get
{
if(instance==null) instance = new Widget();
return instance;
}
}
Однако, я знаю, что этот подход не является поточно и проверка на случай признания ничтожными представляет небольшую неэффективность. Было бы разумно реализовать статический конструктор класса, который создает экземпляр статического экземпляра?
Как я понимаю, статический конструктор будет вызываться всякий раз, когда возникает первый доступ к статическому свойству. Является ли это допустимым, и будет ли он предоставлять какие-либо преимущества в отношении текущего подхода к ленивой загрузке или было бы лучше изучить реализацию прокси-сервера или использовать блокировку, чтобы заставить ее быть потокобезопасной?
public static Widget
{
get
{
if(instance==null)
{
lock(padlock)
{
if(instance==null) instance = new Widget();
}
}
return instance;
}
}
Я не целый большого опыт статических конструкторов, так что не хочу прыгать в этой идее, если она является равной или хуже реализацией имущества ленивой нагрузки.
Приветствие, Гэри
Я считаю, что это Q & Нить даст вам то, что вы хотите: http://stackoverflow.com/questions/246710/how-to-implement-a-singleton-in-c –