【发布时间】:2014-07-01 08:11:44
【问题描述】:
写在docs:
线程池重用线程时,不会清除里面的数据 线程本地存储或在标有 ThreadStaticAttribute 属性。因此,当一个方法检查 线程本地存储或标记有 ThreadStaticAttribute 属性,它找到的值可能会被留下 从早期使用的线程池线程开始。
然而它没有提到执行上下文。如何检查 ExecutionContext 是否被清除?
【问题讨论】:
-
这是一个想象的问题,而不是真实的问题。没有发现与线程关联的 TLS 的机制。找回 ExecutionContext 当然不是问题。
-
@HansPassant 为什么会这么想?如果我尝试获取上下文数据并找到它,那么逻辑会话将在调用堆栈的某处设置。否则我需要设置这些数据。如果没有清除上下文,我可能会错误地处理这种情况。
-
.NET 在将执行上下文从原始线程流向 TP 线程方面投入了大量资金。对 CAS 和远程处理非常重要。只要你不能证明一个实际的问题,它就是一个想象的问题。
标签: .net threadpool executioncontext