在 Web 和 Stack Overflow 上有很多地方不鼓励更改ThreadPool线程或 TPL Task的优先级。尤其:
“您无法控制线程池线程的状态和优先级。”
“运行时管理线程池。你无法控制线程的调度,也无法更改线程的优先级。”
“你不应该改变 PoolThread 的文化或优先级或......。就像你不油漆或重新装饰一辆出租汽车一样。”
“有几种情况适合创建和管理自己的线程而不是使用线程池线程:(例如......)您需要一个线程具有特定的优先级。”
“ThreadPool 中的每个线程都以默认优先级运行,更改 ThreadPriority 的代码无效。”
但是,这样做很简单,并且调试器显示更改似乎确实存在(只要可以读回该值)。
Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
那么问题来了,这个特定禁忌的具体原因是什么?
我的怀疑:这样做会扰乱池的微妙负载平衡假设。但这并不能解释为什么有些消息来源说你不能改变它。