Прежде всего, вам нужно объявить переменную 'ready' как минимум 'volatile', иначе это может иметь неприятные побочные эффекты. Во-вторых, сон , который долго, прежде чем переоценивать состояние, является хорошей идеей, если продолжительность, которую он может занять, действительно очень велика, скажем, несколько минут.
Использование функций Event в WinAPI (CreateEvent, SetEvent(), WaitForSingleEvent()
) - лучший способ сделать это. Конечно, это вносит некоторые накладные расходы, но обычно это нормально.
Если вы хотите придерживаться своего решения, зацикливание и перепроверка условия перед повторным сном может повысить производительность в некоторых сценариях.