例如,我运行了几个具有不同优先级的无限线程。当进行线程切换时,是否会选择低优先级的线程?优先级是绝对的还是仅影响线程选择概率。 谢谢,
答案 0 :(得分:2)
大多数调度程序都基于multilevel feedback queues。这些优先事项主要基于计划的行为。内核将您指定的线程优先级作为更多的“提示”。
例如,如果一个线程执行了大量的IO,那么即使它的优先级低于另一个线程,由于MFQ的运行方式,它也可以更频繁地进行调度。花费更多计划量的线程将被移至MFQ中的较低优先级。放弃一些量子(即IO)的线程可能会保持当前的优先级。
如果为线程1分配比线程2更高的优先级,并且它们正在处理类似的任务,则线程1的调度概率更高。这并不意味着线程1 必须比线程2更频繁地进行调度,它只是向内核提示您希望它比线程2更频繁地进行调度。最后它已经完成了在什么时候调度线程的内核。