¿Qué son las compensaciones por "espera ocupada" frente a "dormir"?

Esto es en extensión a mi pregunta anterior

¿Cómo funciona el modo de bloqueo en sockets de unix / linux?

Lo que recojo de Internet ahora, todo el proceso que invoca llamadas de bloqueo, se pone en suspensión hasta que el programador encuentre las razones para desbloquearlo. Las razones pueden variar de un búfer vacío a un búfer lleno a cualquier otra condición.

Pero entonces, ¿puede ser esta una forma eficiente de tiempo real, digamos aplicaciones en tiempo real duras / firmes? Como el proceso no se desbloquea cuando la condición de desbloqueo se mantiene verdadera, en lugar de que el programador le dé su porción de CPU, y la condición de desbloqueo es verdadera.

Como si quisiera una solución receptiva, estos "bloqueos de giro" u "esperas ocupadas" son la forma correcta de hacerlo, se desperdician las porciones de CPU y, en general, el sistema no responde o puede responder mal.

¿Alguien puede aclarar estos pensamientos conflictivos?

Respuestas a la pregunta(6)

Su respuesta a la pregunta