是C#中不同线程共享的静态类
我需要在线程之间共享一个值而不超出它的边界。 静态变量是否这样做?
静态变量在AppDomain中的多个线程之间共享。 所有线程都将在静态变量的同一实例上查看并执行操作。 因此,如果您使用静态,您可能希望使用某种forms的同步来保护该变量的访问。
如果你想拥有一个线程局部变量,那么ThreadLocal
类就可以轻松实现。 它提供了一种生成和使用每个线程唯一的数据的方法。
你的意思是你希望变量是线程本地的?
您可以使用.NET 4中的[ThreadStatic]
属性或ThreadLocal
类。
就个人而言,如果您使用的是.NET 4,我更喜欢ThreadLocal
– 但如果可以的话,最好还是避免这种情况。 例如 ,您可以将信息封装到用于启动线程的实例中吗?
您使用ThreadStaticAttribute
对其进行装饰,以使静态变量仅在其初始化的线程中共享。
默认情况下,静态变量跨越AppDomain中的所有线程。
是的,应用ThreadStaticAttribute
是的你需要注意同步。