Espera ativa
# Espera ativa

Em engenharia de software, espera ativa, espera ocupada ou espera ociosa é uma técnica em que um processo verifica uma condição repetidamente até que ela seja verdadeira, como esperar o pressionamento da tecla de um teclado ou a espera da liberação de recurso em exclusão mútua. Também pode ser usada para gerar atrasos na execução do sistema por um período determinado de tempo. Ela pode ser uma estratégia válida em certas circunstâncias, mas no geral é considerada um anti-padrão e deve ser evitada, já que o tempo de CPU gasto poderia ser usado noutra tarefa.

## Exemplo

O código C abaixo demonstra duas tarefas que compartilham o recurso global i. A primeira tarefa usa espera ativa para verificar mudanças no valor do recurso.

## Alternativas

A maioria dos sistemas operacionais e bibliotecas de multitarefa provêm um conjunto vasto de chamadas de sistema que bloqueiam o processo num evento, como a aquisição dum recurso, a disponibilidade de um recurso de entrada/saída ou para sinais. Por exemplo, o Java oferece wait, notify e notifyAll, monitores que não utilizam espera ativa. Isso é considerado uma forma mais simples e eficiente de espera. Quando necessária, a espera ativa pode ser otimizada através de funções de atraso fornecidas pela maioria de sistemas operacionais, que desativam a tarefa por um período determinado de tempo.