разработка объекта логгера для многопоточной системы - PullRequest
0 голосов
/ 31 мая 2019

У меня был вопрос на собеседовании: с учетом многопоточной системы, как должен быть спроектирован объект регистрации?

Я сказал, что он должен быть статическим, использовать шаблон синглтона и использовать механизм блокировки:

public class Logger{

    private Logger(){
        Console.WriteLine("Logger created");
    }

    static Logger instance;
    static Object key = new Object();

    public static Logger getInstance(){
        lock (key){
            if  (instance == null){
                instance = new Logger();
            }
        }
        return instance;
    }   
}


Теперь меня интересует инициализация ключевого объекта - он должен быть потокобезопасным и должен быть инициализирован один раз (те же функции, что и для моего регистратора) - поэтому я разработал следующее решение:

public class Logger{

    private Logger(){
        Console.WriteLine("Logger created");
    }

    static Logger instance = new Logger();

    public static Logger getInstance(){
            return instance;
    }   
}

Являются ли эти решения в основном одинаковыми?

...