比较未命名的数据插槽和ThreadLocal ...
MSDN只说
在.NET Framework 4中,可以使用System.Threading.ThreadLocal类创建线程本地对象,这些对象在第一次使用该对象时会被延迟初始化。有关更多信息,请参见惰性初始化。
如果我对懒惰的初始化感到满意,则ThreadLocal似乎是最佳选择……它使用起来更简单,不需要强制转换。选择另一种选择时,还需要考虑其他因素吗?
正如我在评论中所说,它ThreadLocal<T>
是使用Thread Local Dataslots API实现的。您可以通过查看ThreadLocal源代码来确认这一点。除非您有令人信服的理由可以在Windows API级别上工作,否则最好使用ThreadLocal<T>
。
选择一个很好的理由ThreadLocal<T>
是,它确保为每个线程初始化该值。ThreadStatic
不会这样做,并且线程本地数据插槽API的接口也必须为此专门编码。有关更多信息,请参见https://stackoverflow.com/a/18337158/56778。
ThreadLocal<T>
与延迟初始化一起使用。您将省去很多痛苦。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句