Вариант использования для этого: если вы хотите подождать, пока не произойдет событие, но не неопределенно.
Возможно, после истечения времени ожидания вы хотите уведомить пользователя о том, что получение результата занимает больше времени, чем ожидалось.,Возможно, вы хотите инициировать отмену задачи, обеспечивающей результат.
Как вы правильно указали, это вызывает дополнительные издержки, поэтому имеет смысл использовать это вместо wait
, если у вас действительно есть что-то разумноечтобы реагировать на истекшее время ожидания.
Ложные пробуждения - это не столько механизм безопасности, сколько скорее печальная необходимость, навязываемая некоторыми аппаратными архитектурами.В идеальном мире (т. Е. В мире, в котором вы когда-либо вызываете функции wait
только с предикатом), никаких ложных пробуждений не происходит никогда.