我最近阅读 this post about poor performance of fields marked ThreadStatic - 它们显然比正常的现场访问慢 60 倍。 .NET 4 的 ThreadLocal
是否有提供高性能线程特定存储的替代方案?
最佳答案
请记住那是在 2008 年 - 我相信 .NET 4 对于 ThreadStatic
来说要快得多.NET 3.5 以外的字段。我不记得了,但如果你愿意,你可以运行测试。
也就是说,我并不真正相信测试描述 - 因为它不切实际。你真的需要在循环中重复读取线程局部字段吗?您是否更有可能阅读一次,然后再阅读另一段代码?
最终,真正的问题是这些方法中的一种或两种是否足以满足您的特定要求。我更喜欢 ThreadLocal<T>
至 ThreadStatic
不是出于性能原因,而是因为它允许适当的初始化 - 参见我的 article on randomness举个例子。
关于.net - ThreadStatic 与 ThreadLocal<T> 性能 : speedups or alternatives?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3829130/