В общем, «честное планирование потоков» пытается дать каждому потоку равное количество процессорного времени (независимо от того, сколько процессорного времени получают все потоки в процессе);и «честное планирование процессов» пытается дать каждому процессу одинаковое количество процессорного времени (например, давая потокам, принадлежащим к разным процессам, неравное количество процессорного времени).Они являются взаимоисключающими - у вас не может быть обоих (если только у каждого процесса нет одинакового количества потоков).
Обратите внимание, что в любом случае это все шуточная шутка.Например, если один поток получает 10 мс времени на процессоре, который работает медленно из-за теплового регулирования (и / или потому, что другой логический ЦП в том же ядре занят), а другой поток получает 10 мс времени на процессоре, которыйработает быстрее, чем обычно (например, из-за «турбонаддува» и / или потому, что другой логический процессор в ядре не используется);затем эти потоки получили равное количество процессорного времени, но не получили ничего, что можно было бы считать «справедливым» (поскольку один поток мог бы получить в 20 раз больше работы, чем другой).
Примечаниечто это все равно нежелательно.Например, для хороших потоков ОС будет дан приоритет, указывающий, насколько важна работа, которую они выполняют, и вы не хотите, чтобы поток с высоким приоритетом (выполняющий очень важную работу) получал такую же «справедливую долю» процессорного временикак поток с низким приоритетом (выполнение неактуальной / неважной работы).В случаях, когда два потока имеют одинаковый приоритет, вы (теоретически) хотите, чтобы они получали «равное» количество процессорного времени;но на практике это не часто, и потоки блокируют и разблокируют так часто, что об этом не стоит беспокоиться;и на практике это может привести к сценариям «две половины выполненных работ вместо одной выполненной работы и одной незапущенной работы», что увеличивает среднее количество времени, которое требуется работе (например, запросу на работу).