В обычном юзкейсе мы спим на cv, если мы просыпаемся, то мы захватываем лок и проверяем условие. Если условие не выполнилось мы спим дальше. Эта проверка нужна лишь для того, чтобы побороть spurious wakeups, поскольку нет гарантий, что мы проснулись именно из-за нотифая. Если есть возможность проверять условие не используя лок (например атомик) это тоже нормально.