我发现了ThreadStaticAttribute
,对它有很多问题:
我之前实现的所有线程相关静态信息都是作为一个静态字典来实现的,其中 TKey 是 Thread,当我想要访问它时,我使用了 Thread.CurrentThread,这样可以工作。但这需要维护,因为如果线程死掉了,我必须从字典中删除相应的条目。我还需要考虑线程安全和许多其他问题。
通过使用ThreadStaticAttribute
,所有这些问题似乎都得到了解决,但我需要确信。我的问题是:在线程死亡之前,我需要删除由ThreadStaticAttribute
标记的字段所持有的实例吗??该字段的信息保存在哪里??它保存在Thread
对象的实例中,或者类似于这样的东西,以便在不再使用时,垃圾收集器自动丢弃它?是否存在性能惩罚?有什么影响?与我之前使用的基于键的集合相比,它是否更快?
我需要澄清ThreadStaticAttribute
的工作原理。
ThreadStatic
属性方面实际上什么也没做。它完全由CLR处理。 - JaredPar