内部如何工作?

时间:2010-10-05 04:40:00

标签: c# multithreading

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'的顺序是不同的?

1 个答案:

答案 0 :(得分:5)

所有多任务系统都有一个调度程序。调度程序决定下一步将执行的工作单元。基本调度程序可以是运行高分辨率计时器的东西(例如,每100毫秒,一个任务切换发生)。显然,现代实施要复杂得多。

也就是说,大多数现代线程实现都依赖于内核中的调度程序。许多这些调度程序都不具有确定性。也就是说,无法保证上下文切换(即调度程序管理的可运行实例之间的切换)将在任何特定时间发生。

您所看到的是系统调度程序中的差异。