gpt4 book ai didi

c# - 如何获取另一个线程的 ThreadStatic 值?

转载 作者:行者123 更新时间:2023-11-30 15:26:49 25 4
gpt4 key购买 nike

是否有可能根据 Thread 引用获取该线程的 ThreadStatic 值?

最佳答案

不,那是不可能的。与此类属性一样,[ThreadStatic] 属性被抖动识别。它生成对 CLR 的调用以获取指向类的线程本地存储的指针。这个辅助方法有多个版本,最基本的是 JIT_GetSharedGCThreadStaticBase()。但是对于泛型类来说它变得更加复杂,例如,它可以有多个基于类型参数的静态变量。辅助函数有两个不明显的参数,模块 ID 和类 ID。这些 ID 取决于加载代码的 AppDomain。

长话短说,您没有机会进行相同的调用,辅助方法甚至都不会获取线程 ID,它由调用上下文暗示。

您可以使用 Thread.AllocateNamedDataSlot() 将任意数据挂起线程。但请注意,它是静态方法,也不采用线程 ID,它同样基于调用上下文。

这一切都是故意的。线程本地存储的一个非常好的特性是它始终 线程安全。允许从另一个线程访问它的后门会完全破坏该功能。如果您想这样做,您应该非常担心。例如,您可以使用由 ManagedThreadId 键入的自己的查找表。

关于c# - 如何获取另一个线程的 ThreadStatic 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28605611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com