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.会显示什么?是不是绝对的。
------------------------------------------
你知不知道一毫秒的时间内,计算机可以多少条指令?要知道不管调度算法如何,不会长时间地让某个进程某个线程一直不能获得CPU时间的,略微成熟的算法都会避免饿死现象的发生。