从文档中可以很清楚地看出它们之间的区别在于std::barrier可以多次使用并且std::latch只能使用一次。
在我看来,这std::latch只是一个特殊情况,std::barrier它增加了限制而不是功能。最重要的是,文档说count_down使用n大于内部计数器的调用是未定义的行为,因此必须以编程方式强制执行此限制。
那么我们为什么需要std::latch呢?
我唯一的猜测是,可以std::latch在硬件级别以提高性能的方式实现不同的实现。
是什么原因?