[ThreadStatic] private static Foo _foo; public static Foo CurrentFoo { get { if (_foo == null) { _foo = new Foo(); } return _foo; } }
以前的代码线程安全吗?或者我们需要锁定方法吗?
答案 0 :(得分:15)
如果它的ThreadStatic每个线程有一个副本。因此,根据定义,它的线程安全。
答案 1 :(得分:2)
[ThreadStatic]
是线程本地存储的编译器/语言魔术。换句话说,它绑定到线程,所以即使有上下文切换也没关系,因为没有其他线程可以直接访问它。