聊一聊 C# 的线程本地存储TLS到底是什么
C#的ThreadStatic是通过C++运行时提供的__declspec(thread)或__thread来实现的。在CLR中,使用ThreadLocalInfo将变量与线程绑定。C#的线程本地存储使用静态TLS,在编译时就已经声明好,存放在TEB.ThreadLocalStoragePointer指向的指针数组中。通过windbg可以验证。C#是一种业务高层抽象的语言,理解TLS需要深入底层。
原文中文,约5800字,阅读约需14分钟。