为什么线程优先级没有影响?

namespace HelloWorld { class Program { static void Main(string[] args) { Thread t = new Thread(() => WriteY("11")); t.Start(); t.IsBackground = true; Thread.CurrentThread.Priority = ThreadPriority.Highest; for (int i = 0; i < 1000; i++) Console.Write("x"); System.Console.ReadLine(); } static void WriteY(string ss) { for (int i = 0; i < 1000; i++) Console.Write(ss); System.Console.ReadLine(); } } } 

您好,我认为“x”线程应首先完成,因为它的优先级最高。 但结果是他们仍然在转换。

首先,无论优先级如何, 您都无法对首先完成哪个并行作业做出任何假设

另外,请阅读Jeff Atwood的这篇文章,了解为什么使用线程优先级是一个坏主意。

http://www.codinghorror.com/blog/2006/08/thread-priorities-are-evil.html

如果是tl; dr只是一个引用: 无论你是多么出色的程序员,我几乎可以保证你不会超越在你的操作系统中编写调度程序的程序员

如果您的PC上有多个CPU(-core)可用,这是“正常”,因为线程1在CPU /核心1上运行,而线程2在CPU /核心2上运行。
我认为如果您使用更multithreading重新定位相同的线程,然后在后台运行例如Prime95以使用100%的CPU它应该会产生影响,但是如果<=线程然后(可用)CPU / corse调度程序将在自己的核心上运行每个线程(如果它们正在做同样的事情),它们将在同一时间完成...