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