在网络和Stack Overflow上有许多地方不鼓励更改ThreadPool线程或TPL Task的优先级。特别地:
"您无法控制线程池线程的状态和优先级。
运行时管理线程池。您无法控制线程调度,也不能更改线程的优先级。"
"您不应更改PoolThread的Culture、Priority或其他属性。就像您不会给租来的汽车喷漆或重新装修一样。"
"有几种情况下适合创建和管理自己的线程而不是使用线程池线程:(例如...)您需要一个具有特定优先级的线程。"
"线程池中的每个线程都以默认优先级运行,并且更改ThreadPriority的代码没有任何作用。"
但是实际上很容易这样做,并且调试器显示更改似乎确实生效(在可以读回该值的范围内)。
Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
所以问题是,这个特定禁忌的具体原因是什么?我的猜测是:这样做会干扰池的精细负载平衡假设。但这并不能解释为什么有些来源说你不能改变它。