Каковы компромиссы между «занятым ожиданием» и «сном»?

Это в дополнение к моему предыдущему вопросу

Как работает режим блокировки в сокетах unix / linux?

То, что я сейчас собираю из Интернета, весь процесс, вызывающий блокирующие вызовы, усыпляется до тех пор, пока планировщик не найдет причины, чтобы разблокировать его. Причины могут варьироваться от пустого буфера до полного заполнения буфера и любых других условий.

Но тогда может ли это быть эффективным способом в реальном времени, скажем, жестких / твердых приложений реального времени? Поскольку процесс не разблокирован, когда условие разблокирования выполнено, скорее всего, когда планировщик передаст ему свой процессорный срез, и условие разблокирования является верным.

Как будто вы хотите адаптивное решение, я не делаю это "спин-блокировки" или "заняты ожидания" это правильный способ сделать это, процессорные срезы тратятся впустую, и в целом система должна перестать отвечать или может быть плохо реагирует.

Может кто-нибудь, пожалуйста, очистить это противоречивые мысли.

Ответы на вопрос(6)

Ваш ответ на вопрос