一:背景
1. 讲故事
有朋友在后台留言让我说一下C#的 ThreadStatic
线程本地存储是怎么玩的?这么说吧,C#的ThreadStatic是假的,因为C#完全是由CLR(C++)承载的,言外之意C#的线程本地存储,用的就是用C++运行时提供的 __declspec(thread)
或 __thread
来虚构的一套玩法,这一篇我们就来简单聊一聊。
二:C# 的线程本地存储
1. 虚构在哪里
在 C# 中使用ThreadStatic就可以将变量和线程进行绑定,参考代码如下:
internal class Program
{
[ThreadStatic]
public static int num = 10;
static void Main(string[] args)
{
Console.WriteLine($"num={num}");
Debugger.Break();
}
}
在 CLR 中如何将 num 与 Thread 绑定呢&#x