Болтун
Зарегистрирован: 04 July 2005
Сообщения: 276
Примеры кода: 0
|
Re[4]: Производительность Singletone |
18 January 2007 14:16 |
|
|
|
|
Здравствуйте, TK, Вы писали:
TK>Hello, "Pavel M."
>>
>> Готов спорить, что правильно! Эту тему обсуждал не первый раз. Вот
>> реализации. Вы можете сказать недостатки, кроме того, что это не ленивая
>> инициализация?
>>
TK>1. должна быть двойная проверка:
TK>
TK>private Object syncObj = new syncObj();
TK>private static Singletone instance;
TK>public static Singletone Instance
TK>{
TK> get
TK> { if (instance == null) {
TK> lock(syncObj)
TK> {
TK> if (instance == null) instance = new Object();
TK> } }
TK> return instance;
TK> }
TK>}
Утрудимся посмотреть ссылку в моем посте:
:crash:
// Bad code! Do not use!
public sealed class Singleton
{
static Singleton instance=null;
static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance==null)
{
lock (padlock)
{
if (instance==null)
{
instance = new Singleton();
}
}
}
return instance;
}
TK>2. Это как раз ленивая инициализация. Не ленивая это:
TK>
TK>public static readonly Singletone instance = new Object();
TK>
это в зависимости от того, есть ли конструктор статический или нет.
Спасибо, в любом случае, освежил в памяти.
Данное сообщение получено с сайта RSDN
|
|