为什么*不*改变ThreadPool(或任务)线程的优先级?
Web和Stack Overflow中有很多地方不鼓励改变ThreadPool线程或TPL任务的优先级。特别是:
“您无法控制线程池线程的状态和优先级。”
“运行时管理线程池。您无法控制线程的调度,也无法更改线程的优先级。
“你不应该改变PoolThread的文化或优先级......或者就像你没有画出或重新装修租赁汽车一样。”
“在某些情况下,创建和管理自己的线程而不是使用线程池线程是合适的:(例如......)您需要一个线程具有特定的优先级。”
“ThreadPool中的每个线程都以默认优先级运行,而更改ThreadPriority的代码无效。”
但是,这样做很简单,调试器显示更改似乎确实存在(只要值可以回读)。
Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
所以问题是,这个禁忌的具体原因是什么?
我怀疑:这样做会扰乱游泳池的微妙负载平衡假设。但这并不能解释为什么有些消息来源说你无法改变它。
没有找到相关结果
已邀请:
6 个回复
珊畴炮贩号
羔磺
戊袱
感秆暴壳
很缴
导力疵谜