API мудрый, std::latch
позволяет вести обратный отсчет без блокировки. Представьте, что вам нужно сделать 172 пустышки, прежде чем начнётся какое-то другое задание. Вы можете установить защелку со значением 173, и каждая нить, завершающая цикл, будет отсчитывать защелку, и у нити, которая должна потреблять эти щербинки, ждать на защелке.
Рабочие потоки будут вести обратный отсчет, но не будут ждать, так как у них есть другие детали для визуализации. Если они ложатся спать, они используют для этого другой примитив синхронизации.
std::barrier
позволяет вести обратный отсчет во время блокировки. Его нельзя использовать, чтобы разрешить 10 нитям отображать 172 бороздки. Единственное, что вы можете сделать в качестве нити на барьере - это достичь его или решить, что вы больше не участвуете.
Могут также быть аппаратные различия, но их API-интерфейсы весьма различны, и замена защелки на барьеры невозможна.