加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在这里解释线程执行顺序?

发布时间:2020-12-15 19:55:57 所属栏目:百科 来源:网络整理
导读:从下面的代码中,我会在x之前打印出“y”,但“x”会先开始打印.我是以线性方式阅读这个,所以为什么“x”首先开始打印,即使在主要方法中首先调用t.Start()? static void Main(){ Thread t = new Thread(ThreadTest.WriteY); t.Start(); for(int i = 0; i 1000
从下面的代码中,我会在x之前打印出“y”,但“x”会先开始打印.我是以线性方式阅读这个,所以为什么“x”首先开始打印,即使在主要方法中首先调用t.Start()?

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

解决方法

好吧,这样考虑吧.

给你的朋友一堆文件,并自己保持一堆.

然后你告诉你的朋友“开始在那些文件上写出数字”,然后立即开始做同样的事情.

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

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

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

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

所以基本上,你的朋友可能会在你设法开始之前开始,反之亦然,但事先你不知道,这不是“正确的答案”.

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

话虽如此,启动一个新线程会产生开销,这可能会使得规模有利于主线程在额外线程之前进入循环.但是,如果不可能发生相反的情况,我会感到惊讶.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读