are static classes shared among different threads in C#

前端 未结 5 1626
野性不改
野性不改 2021-02-14 11:44

I need to share a value between threads without exceeding it\'s boundary. Does a static variable do this?

相关标签:
5条回答
  • 2021-02-14 12:04

    Static variables are shared across multiple threads within an AppDomain. All threads will see, and act, upon the same instance of a static variable. As such, if you're using static, you will likely want to use some form of synchronization to protect the access of that variable.

    If you want to have a thread-local variable, the ThreadLocal<T> class makes this easy. It provides a means of generating and using data that is unique per thread.

    0 讨论(0)
  • 2021-02-14 12:04

    You decorate it with the ThreadStaticAttribute, to make the static variable share across only the thread it is initialized in.

    Static variables by default are across all threads in an AppDomain.

    0 讨论(0)
  • 2021-02-14 12:05

    Yes, apply theThreadStaticAttribute

    0 讨论(0)
  • 2021-02-14 12:28

    You mean you want the variable to be thread-local?

    You can either use the [ThreadStatic] attribute or the ThreadLocal<T> class from .NET 4.

    Personally I'd prefer ThreadLocal<T> if you are using .NET 4 - but better still would be to avoid this sort of context if you can. Can you encapsulate the information into an instance which is used to start the thread, for example?

    0 讨论(0)
  • 2021-02-14 12:28

    Yes You need to watch out for synchronization though.

    0 讨论(0)
提交回复
热议问题