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");
}
Run Code Online (Sandbox Code Playgroud)
内部线程如何工作?意味着为什么每次运行时上述代码的输出都没有修复,'x'和'y'的顺序是不同的?
所有多任务系统都有一个调度程序.调度程序决定下一步将执行的工作单元.基本调度程序可以是运行高分辨率计时器的东西(例如,每100毫秒,一个任务切换发生).显然,现代实现要复杂得多.
也就是说,大多数现代线程实现都依赖于内核中的调度程序.许多这些调度程序都不具有确定性.也就是说,无法保证上下文切换(即调度程序管理的可运行实例之间的切换)将在任何特定时间发生.
您所看到的是您的系统调度程序中的差异.