这是初始化[ThreadStatic]的线程安全方法吗?

时间:2009-07-06 15:24:42

标签: multithreading thread-safety thread-static

[ThreadStatic]
private static Foo _foo;

public static Foo CurrentFoo {
   get {
     if (_foo == null) {
         _foo = new Foo();
     }
     return _foo;
   }
}

以前的代码线程安全吗?或者我们需要锁定方法吗?

2 个答案:

答案 0 :(得分:15)

如果它的ThreadStatic每个线程有一个副本。因此,根据定义,它的线程安全。

This blog has some good info on ThreadStatic.

答案 1 :(得分:2)

[ThreadStatic]是线程本地存储的编译器/语言魔术。换句话说,它绑定到线程,所以即使有上下文切换也没关系,因为没有其他线程可以直接访问它。

相关问题