gpt4 book ai didi

c# - 这里解释一下线程的执行顺序?

转载 作者:行者123 更新时间:2023-11-30 13:10:02 26 4
gpt4 key购买 nike

从下面的代码来看,虽然“y”会在 x 之前打印出来,但“x”先开始打印。我正在以线性方式阅读此内容,那么即使在主方法中首先调用了 t.Start(),为什么“x”首先开始打印?

static void Main()
{

Thread t = new Thread(ThreadTest.WriteY);
t.Start();

for(int i = 0; i < 1000; i++) Console.Write("x");
}

public class ThreadTest
{
public static void WriteY()
{
for(int i = 0; i < 1000; i++) Console.WriteLine("y");
}
}

最佳答案

好吧,这样想吧。

给你的 friend 一叠文件,你自己留一叠。

然后你告诉你的 friend “开始在那些纸上写下数字”,然后你立即开始做同样的事情。

现在告诉我,你们谁会先完成?

而且,考虑到这是您的问题,为什么?

在这里确定性地输入正确答案是不可能的,因为有太多因素会影响你们两个的速度:

  • 开始写数字
  • 写出数字
  • 继续看下一张纸

所以基本上,您的 friend 可能会在您开始之前就开始,反之亦然,但您无法事先知道,而且这不是“正确答案”。

每次运行此程序时,它都有可能表现不同,至少在两个线程之间的执行顺序方面是这样。

话虽如此,启动新线程会产生开销,这可能会导致主线程在额外线程进入循环之前进入循环。但是,如果不可能发生相反的情况,我会感到惊讶。

关于c# - 这里解释一下线程的执行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654234/

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