ThreadStatic

来源:互联网 发布:淘宝小号怎么找回来 编辑:程序博客网 时间:2024/04/30 13:40
标记为 ThreadStaticAttribute 的静态(在 Visual Basic 中为 Shared)字段不在线程之间共享。每个执行线程都有单独的字段实例,并且独立地设置及获取该字段的值。如果在不同的线程中访问该字段,则该字段将包含不同的值。

注意 不要为标记为 ThreadStaticAttribute 的字段指定初始值,因为这样的初始化只会发生一次,因此在类构造函数执行时只会影响一个线程。在不指定初始值的情况下,如果它是值类型,可依赖初始化为其默认值的字段,如果它是引用类型,则可依赖初始化为空引用(Visual Basic 中为 Nothing)的字段。
  class Program
  {
    [ThreadStatic] static int i;
    static Random r = new Random();

    public static void ThreadProc()
    {
      i = r.Next(1, 10);

      while (true)
      {
        Console.WriteLine("{0}:{1}", Thread.CurrentThread.Name, i);
        Thread.Sleep(500);
      }
    }

    public static void Main()
    {
      for (int i = 0; i < 2; i++)
      {
        Thread t = new Thread(new ThreadStart(ThreadProc));
        t.Name = "T" + i.ToString();
        t.Start();
      }

      Console.WriteLine("Press Enter key to exit...");
      Console.ReadLine();
    }
  }
 
原创粉丝点击