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

c# – 在这里解释线程执行顺序?,第1张

概述从下面的代码中,我会在x之前打印出“y”,但“x”会先开始打印.我是以线性方式阅读这个,所以为什么“x”首先开始打印,即使在主要方法中首先调用t.Start()? static void Main(){ Thread t = new Thread(ThreadTest.WriteY); t.Start(); for(int i = 0; i < 1000; i++) 从下面的代码中,我会在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");    }}
解决方法 好吧,这样考虑吧.

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

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

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

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

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

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

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

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

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

总结

以上是内存溢出为你收集整理的c# – 在这里解释线程执行顺序?全部内容,希望文章能够帮你解决c# – 在这里解释线程执行顺序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1225351.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存