Я прочитал ответ на этом сайте, в котором говорится, что спин-блокировка сокращает накладные расходы с помощью переключателей контекста, и после этого я читаю инструкцию из учебника, относящуюся к этому:
Spin-lock делает ожидание занятымПрограмма не должна быть прервана.
Мой вопрос к названию.
Поскольку в книге используется цикл while для обозначения реализации spin часть спин-блокировки, ниже я рассуждаю, пытаясь объяснить себя этим соображением:
Звучит так, как будто есть программа с занятым циклом ожидания, тогда все остальные программы (процессы) не будет выполняться вечно, но не приведет ли это к нарушению среды мультипрограммирования, поскольку другие процессы больше не могут выполняться после истечения определенного промежутка времени?Но я помню, что ОС будет препятствовать тому, чтобы какой-либо процесс доминировал над ЦП навсегда?
Или это обычно верно для большинства архитектур, поэтому это не рекомендуется, так как степень многопрограммирования уменьшается, или нужно точно знать, как долго это происходит.остановится?Извините за расплывчатый вопрос, но то, что я напечатал, точно такое же, как указано в книге.
Для более подробной информации о моей путанице: я думаю, что для данного цикла while
while (this == true);
- не более чемзатраченная версия
if (this == true);
if (this == true);
if (this == true);
...
...
if (this == true); // (*)
...
...
if (this == true);
...
Так почему же она не будет прервана на каком-то шаге (*)
выше, по какой-то причине, например, как временной интервал для процесса закончен, а другой процесс выбран из очереди готовности?