160得票5回答
ThreadStatic属性如何工作?

[ThreadStatic] 属性是如何工作的?我原以为编译器会生成一些中间语言(IL)来存储/检索 TLS 中的值,但在反汇编中看起来并没有在那个层面上执行。 接下来,如果将其放在非静态成员上会发生什么?我们有一个开发人员犯了这个错误,而编译器甚至没有提供警告。 更新 第二个问题在这里...

107得票3回答
ThreadStatic和ThreadLocal<T>:泛型优于属性吗?

[ThreadStatic] 是使用属性来定义的,而 ThreadLocal&lt;T&gt; 则使用泛型。 为什么选择了不同的设计方案? 在这种情况下,使用泛型相比使用属性有什么优缺点?

53得票2回答
初始化ThreadStatic字段仍会导致NullReferenceException异常。

我写了一个多线程的随机数生成器public static class MyRandGen { private static Random GlobalRandom = new Random(); [ThreadStatic] private static Random ...

29得票2回答
在非异步/等待代码中,AsyncLocal<T> 有什么作用?

我正在处理一个非常庞大而古老的桌面 winform 应用程序的代码库。在这个代码库中,有很多操作在后台线程中执行,主要使用 BackgroundWorker。 在这个代码库中的一个常见模式是通过将工件绑定到正在执行的线程来隐藏复杂性。例如,数据库连接和事务存储在 [ThreadStatic]...

25得票2回答
ThreadStatic与ThreadLocal<T>性能:加速或替代方案?

我最近阅读了这篇关于ThreadStatic标记的字段性能差的帖子 - 据说它们比普通字段访问慢60倍。.NET 4的ThreadLocal&lt;T&gt;表现得更好吗? 有没有其他提供高性能线程特定存储的替代方案?

21得票2回答
ASP.NET中的ThreadStaticAttribute

我有一个组件需要为每个线程存储静态值。这是一个通用的组件,可以在许多场景中使用,而不仅仅是在ASP.NET中。 我想使用[ThreadStatic]属性来实现我的目标。假设它在ASP.NET场景下也能正常工作,因为我假设每个请求都在自己的线程中调用。 经过一些研究,我发现Scott Han...

14得票2回答
.NET:ThreadStatic vs lock { }。为什么ThreadStaticAttribute会降低性能?

我写了一个小测试程序,惊讶地发现使用lock {}解决方案比使用带有[ThreadStatic]属性的无锁方案更快。 [ThreadStatic]片段: [ThreadStatic] private static long ms_Acc; public static void RunTes...

14得票3回答
使用ThreadStatic替换昂贵的本地变量 - 是个好主意吗?

更新:正如我预料的那样,社区对这个问题的明智建议是“测量并查看”。chibacity发布了一个答案,其中包含一些非常好的测试;同时,我自己也写了一个测试;我看到的性能差异实际上是如此之大,以至于我感到有必要写一篇关于它的博客文章。 然而,我还应该承认Hans的解释,即ThreadStatic...

10得票2回答
如何在C#的异步等待模型中保留线程上下文?

使用ThreadStatic并在每次await完成后设置上下文“是一种选择吗”? 是否还有其他方法? public async void Test() { // This is in Thread 1 Foo foo = new Foo(); Context.cont...

10得票1回答
ASP.NET MVC3请求线程亲和性

我在我的 asp.net mvc3 应用程序(在 IIS7 上)中使用专有的 IoC 机制,该机制在 [ThreadStatic] 字段中保存状态,因此依赖于一个假设:HttpApplication.BeginRequest、HttpApplication.EndRequest 和它们关联的整...