Tag: double checked locking

Singleton仔细检查并发问题

fallowing子句来自jetbrains.net在阅读了这篇以及网上的其他文章之后,我仍然不明白在第一个线程进入锁之后如何返回null。 有人确实理解它可以帮助我并以更人性化的方式解释它吗? “考虑以下代码: public class Foo { private static Foo instance; private static readonly object padlock = new object(); public static Foo Get() { if (instance == null) { lock (padlock) { if (instance == null) { instance = new Foo(); } } } return instance; } }; 给定上述代码,初始化Foo实例的写入可能会延迟,直到写入实例值,从而产生实例返回处于单元化状态的对象的可能性。 为了避免这种情况,必须使实例值变为易失性。 “