gpt4 book ai didi

C# 创建通用实例

转载 作者:行者123 更新时间:2023-11-30 14:18:59 25 4
gpt4 key购买 nike

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

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"); }
}
}

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

编辑2:我的问题正是为什么“该实例对两个线程都是通用的”

最佳答案

不清楚您所说的“公共(public)实例”是什么意思,但是构造函数肯定会创建一个新实例。 Go 方法执行两次,一次在新线程中,一次在主线程中。

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

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

关于C# 创建通用实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3599331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com