【问题标题】:When does ThreadLocalStorage get cleanedThreadLocalStorage 什么时候被清理
【发布时间】:2012-09-14 09:00:11
【问题描述】:

如果我把东西放在 c# TLS 中,它什么时候被清理,还是我的工作是清理它?

我是说

a) 无论线程如何启动给定的工作(一个 QueueUserWorkItem 线程、WCF 调用...),我总是会从一个空的 TLS 开始

b) 如果我在 TLS 中放入昂贵的东西,它们会在线程完成其工作时被 GC 处理。请注意,我没有说“结束”,因为我假设大多数 .net 线程来自一个或多个池,因此就操作系统而言,它们不一定会结束。还是我的工作是始终“最终”自己确保自己不会留下一团糟

【问题讨论】:

    标签: c# thread-local


    【解决方案1】:

    TLS 条目将在线程被放回池中后继续存在。

    因此,换句话说,如果您要使用 System.Threading.ThreadPool 类中的线程,则您有责任清理放入 TLS 中的所有内容。

    【讨论】:

    • 我做了我应该做的事——写了一个测试程序,你是对的——ty
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2019-07-24
    • 2012-01-22
    • 1970-01-01
    相关资源
    最近更新 更多