Thread t = new Thread (WriteY);
t.Start();
for (int i = 0; i < 1000; i++) Console.Write ("x");
static void WriteY()
{
for (int i = 0; i < 1000; i++) Console.Write ("y");
}
内部线程如何工作?意味着为什么每次运行都不会修复上述代码的输出,'x'和'y'的顺序是不同的?
答案 0 :(得分:5)
所有多任务系统都有一个调度程序。调度程序决定下一步将执行的工作单元。基本调度程序可以是运行高分辨率计时器的东西(例如,每100毫秒,一个任务切换发生)。显然,现代实施要复杂得多。
也就是说,大多数现代线程实现都依赖于内核中的调度程序。许多这些调度程序都不具有确定性。也就是说,无法保证上下文切换(即调度程序管理的可运行实例之间的切换)将在任何特定时间发生。
您所看到的是系统调度程序中的差异。