Из справочной страницы wait ()
Системный вызов wait () приостанавливает выполнение вызывающего потока до
один из его детей заканчивается.
Относительно того, почему использовать wait (), он говорит:
В случае прерванного ребенка выполнение ожидания позволяет системе
освободить ресурсы, связанные с ребенком; если ждать не
выполнено, затем прерванный ребенок остается в состоянии «зомби»
Итак, хорошей практикой является использование wait (), а wait () - блокирующая команда. Это то, что я извлекаю из справочной страницы.
Как использовать wait (), но неблокирующим образом, чтобы вызывающий поток мог заниматься своим делом, и при изменении дочернего состояния он получает уведомление.