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"); } } 解决方法
好吧,这样考虑吧.
给你的朋友一堆文件,并自己保持一堆. 然后你告诉你的朋友“开始在那些文件上写出数字”,然后立即开始做同样的事情. 现在告诉我,你们谁先完成? 而且,考虑到这是你的问题,为什么? 在这里确定性地输入正确的答案是不可能的,因为影响你们两个人的速度会有很多因素: >开始写出数字 所以基本上,你的朋友可能会在你设法开始之前开始,反之亦然,但事先你不知道,这不是“正确的答案”. 每次运行此程序时,它都有可能表现不同,至少在两个线程之间的执行顺序方面. 话虽如此,启动一个新线程会产生开销,这可能会使得规模有利于主线程在额外线程之前进入循环.但是,如果不可能发生相反的情况,我会感到惊讶. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |