C#创建通用实例

Sta*_*tan 3 c# instance

我的问题是为什么这一行- ThreadTest tt = new ThreadTest();在下面的示例中创建一个公共实例而不是一个单独的实例。请指教,谢谢!

class ThreadTest
{
  bool done;

  static void Main()
  {
    ThreadTest tt = new ThreadTest();   // Create a common instance
    new Thread (tt.Go).Start();
    tt.Go();
  }

  // Note that Go is now an instance method
  void Go() 
  {
     if (!done) { done = true; Console.WriteLine ("Done"); }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:该示例来自http://www.albahari.com/threading/#_Introduction,该示例演示了如何在线程之间共享数据。

EDIT2:我的问题恰恰是为什么“该实例对两个线程都相同”

Tim*_*mwi 5

不清楚“通用实例”是什么意思,但是构造函数肯定会创建一个新实例。该Go方法执行两次,一次在新线程中,一次在主线程中。

也许代码作者的意思是该实例对于两个线程都是通用的,因为两个线程Go在同一个实例上调用该方法。

Go方法的内部具有竞争条件。它可能会意外地打印两次“完成”。