我的问题是为什么这一行- 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:我的问题恰恰是为什么“该实例对两个线程都相同”
不清楚“通用实例”是什么意思,但是构造函数肯定会创建一个新实例。该Go方法执行两次,一次在新线程中,一次在主线程中。
也许代码作者的意思是该实例对于两个线程都是通用的,因为两个线程Go在同一个实例上调用该方法。
该Go方法的内部具有竞争条件。它可能会意外地打印两次“完成”。