Каковы преимущества и недостатки Busy-wait и таймерных прерываний в программировании?

Возможный способ достижения подходящей задержки — использовать ожидание занятости, однако
Каковы преимущества и недостатки использования подхода с ожиданием занятости или прерыванием по таймеру при программировании?

1

Решение

Недостатком ожидания занятости во встроенных устройствах является повышенное энергопотребление. В состоянии ожидания процессор работает на полную мощность, потребляя энергию без результата. Большинство процессоров с низким энергопотреблением имеют возможность переводить процессор в спящий режим в ожидании прерывания по таймеру, что значительно снижает энергопотребление. Более низкое энергопотребление = более длительное время автономной работы.

2

Другие решения

Их, наверное, много, я постараюсь рассмотреть то, что мне кажется наиболее важным.

Преимущества занятого ожидания:

  • Поток выполнения обычно легче понять и, следовательно, менее подвержен ошибкам.
  • Сроки могут быть определены более точно в некоторых случаях

Недостатки:

  • Никакой другой код (кроме, возможно, других подпрограмм прерывания) не может быть выполнен.
  • Время процессора тратится впустую: если никакая другая работа не должна быть обработана, все еще более эффективно установить некоторое энергосберегающее состояние и позволить прерыванию таймера вовремя разбудить его.
3

Если вам не нужно больше ничего делать в вашем приложении или результат должен быть обработан немедленно (что довольно редко), вы не захотите долго ждать. Он съедает циклы, которые можно использовать, делая что-то еще или спать.

Простой пример, скажем, вы делаете термостат Wi-Fi, который связывается с чипом Wi-Fi через UART. Ваше приложение должно будет считывать и обрабатывать температуру, обновлять при появлении новых данных, отправлять сообщения Wi-Fi, получать сообщения Wi-Fi и получать обновления от нажатия кнопок, и это лишь некоторые из них. Если вы заняты ожиданием того, чтобы что-то из этого произошло, тогда ваш термостат не сможет ничего сделать, пока он не прервется.

2