C# · 12月 26, 2021

c# – ThreadLocal和static方法?

使用类名称访问静态字段: public class Me(){ public static int a=5;}

我可以使用Me.a访问它,所以它附加到课堂上.

但是当我看到:

static ThreadLocal<int> _x = new ThreadLocal<int> (() => 3);

它保证每个线程看到_x的不同副本.

我们没有看到静态是每个类,而不是每个线程? ThreadLocal如何设置给每个线程不同的_x副本?

解决方法

Didnt we just see that static is per class and not per thread ?

是.所以想象一下ThreadLocal< T>实例持有一个静态字典< Thread,T>它查找当前线程的值.

这可能不是它如何实际工作,但它是一个简单的解释如何可能.你可以自己写