是否需要Threadstatic标志?

时间:2011-10-18 12:19:13

标签: .net multithreading performance

我正在使用Threads。我不确定是否需要标志ThreadStatic。无论如何,在任何线程中都可以访问简单类型的布尔值。

在处理多个线程时,需要做什么:

Private _ImageToggle As Boolean

 <ThreadStatic()> Private _ImageToggle As Boolean

*我对Marc Gravells的解读回答*

如果有多个实例都使用多线程,则“Threadstatic”标志可以是使用共享值的解决方案。据我所知,对于基本类型,它永远不会有意义。

1 个答案:

答案 0 :(得分:2)

由于它不是static(VB中的Shared),[ThreadStatic]无效。没有;它不需要这个。

当应用于静态字段时,[ThreadStatic]表示每个线程正在与不同的值进行通信(实际上它变为线程本地存储)。这是双刃剑,因为任何基于异步的(包括ASP.NET和WCF)代码都需要非常小心。一般来说,我会避免使用此标志 - 最好使用实例成员并将其作为上下文传递(在线程之间)。