猜猜结果。说说为什么

l8487 2009-08-22 09:37:17

public static void DisplayNumber()
{
Thread.Sleep(1);//这里暂时叫S1吧
Console.WriteLine(Thread.CurrentThread.Name + " START");
for (int i = 0; i <= 10; i++)
{
Console.WriteLine(Thread.CurrentThread.Name + " " + i);
}
Thread.Sleep(1);//这里叫S2
}

static void Main(string[] args)
{
Thread myThread = new Thread(DisplayNumber);
myThread.Name = "myThread";
myThread.Start();
myThread.Suspend();
Thread.CurrentThread.Name = "MainThread";
DisplayNumber();
myThread.Resume();
Console.ReadKey();
}

问题:1、打开S1.注释掉S2.。会显示什么?是不是绝对每次都会显示?
会不会发生这种情况。子线程休息了1毫秒,但是接下来CPU资源分配给了系统的其他进程,等子线程恢复的时候,主线程依然没有获得CPU资源。导致子线程继续运行。
2、注释掉S1,打开S2.会显示什么?是不是绝对的。
...全文
43 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dancingbit 2009-08-22
  • 打赏
  • 举报
回复
不确定的东西,纯粹是浪费时间。

会不会发生这种情况。子线程休息了1毫秒,但是接下来CPU资源分配给了系统的其他进程,等子线程恢复的时候,主线程依然没有获得CPU资源。导致子线程继续运行。
------------------------------------------
你知不知道一毫秒的时间内,计算机可以多少条指令?要知道不管调度算法如何,不会长时间地让某个进程某个线程一直不能获得CPU时间的,略微成熟的算法都会避免饿死现象的发生。
dylike 2009-08-22
  • 打赏
  • 举报
回复
试下就知道了。
l8487 2009-08-22
  • 打赏
  • 举报
回复
哦。么人来研究啊。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧