C# ThreadStatic属性还是ConcurrentDictionary?哪个对线程安全更好?

C# ThreadStatic属性还是ConcurrentDictionary?哪个对线程安全更好?,c#,multithreading,concurrency,thread-safety,ilist,C#,Multithreading,Concurrency,Thread Safety,Ilist,我是ThreadStatic新手,以前使用过ConcurrentDictionary。那么,哪一个是更好的选择?或者这取决于情景。如果视情况而定: 我应该使用标有IList属性的[ThreadStatic]什么场景 我应该在什么情况下使用*ConcurrentDictionary* ThreadStatic只能在当前线程中使用,不能从其他线程访问实例。每个线程都有自己的ThreadStatic实例 ThreadStatic存储在线程本地存储中,每个线程都有本地存储,.NET执行一些额外的逻辑来实

我是ThreadStatic新手,以前使用过ConcurrentDictionary。那么,哪一个是更好的选择?或者这取决于情景。如果视情况而定:

  • 我应该使用标有IList属性的[ThreadStatic]什么场景
  • 我应该在什么情况下使用*ConcurrentDictionary*

  • ThreadStatic只能在当前线程中使用,不能从其他线程访问实例。每个线程都有自己的ThreadStatic实例

    ThreadStatic存储在线程本地存储中,每个线程都有本地存储,.NET执行一些额外的逻辑来实现这一点

  • 如果希望每个线程访问一个实例,则应使用ThreadStatic。在客户机-服务器通信的情况下,服务器每个套接字有一个线程,它需要将有关客户机套接字的信息和其他一些信息存储在由其他库访问的静态变量中。ThreadStatic会导致复杂的代码,因此应避免使用或小心编码

  • 当您想要访问多个线程之间的共享资源时,可以使用ConcurrentDictionary


  • ThreadStatic—“当您希望每个线程访问一个实例时”。如果每个线程有一个实例,为什么我需要使用ThreadStatic?实际上,和往常一样,如果我只需要一个实例,我就不使用ThreadStatic。这取决于你使用它们的目的。从表面上看,这两件事毫无共同之处。这就像问你是应该吃桔子还是骑自行车。告诉我们你想做什么,我们可以帮你决定怎么做。@JimMischel:噢,谢谢,我不认识。我想要的是多线程共享相同的资源(例如对象列表),并且应该是安全的。