Yes, and there are other ways too like:
std::latch where you can use count_down()
std::barrier where you can use arrive_and_wait()
std::counting_semaphore where you can use release() / acquire()