Это то, что известно как ожидание занятости, при котором время, необходимое для конкретного вычисления, используется в качестве счетчика, вызывающего задержку.
У этого подхода есть проблемы, заключающиеся в том, что на разных процессорах с разной скоростью вычисления необходимо корректировать. Этот подход использовался в старых играх, и я помню симуляцию с использованием этого подхода ожидания, который был нацелен на старый процессор типа 8086, чтобы анимация двигалась плавно. Когда игра использовалась на ПК с процессором Pentium, вместо ракеты, величественно поднимающейся вверх по экрану в течение нескольких секунд, вся анимация мелькала перед глазами так быстро, что было трудно разобрать, что это за анимация.
Этот вид занятого ожидания означает, что в работающем потоке поток находится в цикле вычислений, отсчитывая количество миллисекунд. В результате поток не делает ничего, кроме обратного отсчета.
Если операционная система не является вытесняющей многозадачной ОС, то ничего больше не будет выполняться до завершения обратного отсчета, что может вызвать проблемы в других потоках и задачах.
Если операционная система является вытесняющей многозадачностью, результирующие задержки будут иметь изменчивость, поскольку управление переключается на какой-то другой поток на некоторый период времени, прежде чем переключиться обратно.
Этот подход обычно используется для небольших частей программного обеспечения на выделенных процессорах, где вычисление имеет известное количество времени и когда выделение процессора для обратного отсчета не влияет на другие части программного обеспечения. Примером может быть небольшой датчик, который выполняет считывание для сбора выборки данных, а затем выполняет такой цикл занятости перед выполнением следующего считывания для сбора следующей выборки данных.
person
Richard Chambers
schedule
04.06.2014