在多线程应用程序中使用屏障的真实示例是什么?

Mur*_* VP 4 multithreading barrier

JDK 的并发包、Boost 的线程库、Perl 的线程库(尽管不在 Python 中)都实现了屏障,我还没有遇到使用屏障的需要,所以想知道多线程应用程序中的典型用例是什么。

Chu*_*ose 6

可以通过人为的示例在任何地方使用屏障,但您经常会在分散/减少方法中看到它们,其中在继续之前都需要不同线程的结果。

例如,如果你想并行排序,你可以将列表拆分 n 次并启动 n 个线程来对它们的部分进行排序并暂停,当它们全部完成时,它们会死掉,让父级知道终于可以合并排序的块了。(我知道有更好的方法,但这只是一种实现)。

我看到的另一个地方是并行网络,您必须为每个有效负载发送一定量的数据。因此,接口将启动 n 个桶并等待它们全部填满,然后再发送传输。当您考虑分区 T1 线路时,​​它有点有意义,通过 64 个多路复用分区发送一个突发数据会比发送 1 个分区的数据更好(本质上成本相同,因为数据包必须用 0 填充。)

希望这些可以让您思考这个问题!