если задача требует того чтобы забрать процессор в эксклюзивное пользование на длительное время, то задача плохая ее нужно переделать, чтобы она получала кванты времени именно тогда когда нужно, в этом и весь смысл этой борьбы. Тем более если это длительное время будет использовано для холостого цикла
В том-то и дело что это не nop, а специальный вызов который дает процессору понять что мой поток ничего не делает, а только ждет событи которое должно наступить раньше чем квант времени на переключение задач, поэтому отдать процессор другой задаче я сейчас не могу, но и ближайшие несколько тактов делать точно ничего не буду.
Процессор получает возможность использовать эти такты для выполнения задач по оптимизации, которые у него накопились или заюзать блоки моего ядра для более быстрого выполнения инструкций другим потоком, ну или на худой конец отключить часть блоков чтобы снизить потребление тока. Задать число таких тактов какраз можно. Только проблема в том что вычислить их проблематично, т.к. частота современных процессоров динамически меняется.
А если просто цикл крутить или nop выполнять, то это может помешать другим потокам выполниться более быстро, заблокирует процессору возможность обновить на этих тактах ячейки кэша и т.п.






Ответить с цитированием