为什么锁是线程安全的?

时间:2019-05-06 15:33:52

标签: c# multithreading locking

我在这里有这段代码,据说这显然是访问我的单例实例的多线程安全。但是我不明白为什么它被认为是多线程安全的。

    private static Singleton uniqueInstance = null;

    private static readonly object padlock = new object();

    private Singleton()
    {
    }

    public static Singleton GetInstance
    {
        get
        {
            lock (padlock)
            {
                if (uniqueInstance == null)
                {
                    uniqueInstance = new Singleton();
                }
            }

            return uniqueInstance;
        }
    }

据我了解,线程安全代码意味着可以通过多个线程访问该代码,并且仍然可以正常运行,但是我不明白的是为什么没有锁,代码就不是线程安全的。我一直在阅读有关线程安全性的文章,但仍然对此不太了解。

此外,当多个线程访问此消息时会发生什么,以及这会对性能产生什么样的影响?

0 个答案:

没有答案