Quais são as compensações para “espera ocupada” versus “sono”?

Isso está em extensão à minha pergunta anterior

Como funciona o modo de bloqueio em soquetes unix / linux?

O que eu recebo da Internet agora, todo o processo que invoca o bloqueio de chamadas, é colocado em suspensão até que o agendador encontre as razões para desbloqueá-lo. As razões podem variar de buffer vazio para buffer full para qualquer outra condição.

Mas, então, isso pode ser um meio eficiente para aplicações em tempo real, digamos, rígidas / firmes em tempo real? Como o processo não é desbloqueado quando a condição de desbloqueio é verdadeira, em vez disso, quando o agendador dá a ele sua fatia de CPU, e a condição de desbloqueio é verdadeira.

Como se você quisesse uma solução responsiva, eu não faço essa "rotação de bloqueios" ou "espera ocupada" são o caminho certo para fazê-lo, fatias da CPU são desperdiçadas, e todo o sistema deve ficar sem resposta ou pode responder mal.

Alguém pode, por favor, esclarecer esses pensamentos conflitantes?

questionAnswers(6)

yourAnswerToTheQuestion