线程优先级没有效果?

1 .net multithreading

我创建了一个简单的.NET控制台应用程序,在其中我启动了3个托管线程.每个线程执行以下循环:

        while (true)
        {
            System.Console.WriteLine(thread.Name + " " + DateTime.Now);
            Thread.Sleep(10);
        }
Run Code Online (Sandbox Code Playgroud)

我将第一个线程的优先级设置为高,让应用程序运行几分钟.总的来说,我希望第一个线程更频繁地写入控制台.事实上,它没有明显的效果.将一个线程的优先级设置为高似乎与将所有三个设置为正常相同.

我错过了什么线程优先级,这可以解释这个?

Jef*_*ker 7

试试吧Sleep(1).10ms在线程时间是永恒的,但Sleep(1)基本上说"我将剩余的时间切片执行到另一个线程",我认为这是你想要的.线程优先级不只是使线程更频繁地执行,它只是说"如果调度程序在给予线程A时间片和线程B时间片之间做出选择,则将其提供给具有更高优先级的线程." 尝试这个改变,看看会发生什么.或者,让每个线程执行不同的时间(不要使用睡眠,在一个循环中打印100个元素,在另一个上打印1000,等等)

编辑:更改为睡眠(1),不知道为什么它被修改.请参阅下面的评论,了解为什么Sleep(1)是更好的选择.