繁体   English   中英

高效的并行握手(组合)

[英]Efficient parallel handshaking (combinatorics)

在编写并行程序的大量时间中,我遇到了用2组值的唯一组合制作某些东西的问题。 换句话说,这是握手问题,每个人都必须与其他人握手。 握手后,有晚餐在等待所有参与者。

我知道有两种方法可以做到这一点:

  1. 给所有男人编号,并使每个男人平行,这些男人将与人数较少的男人握手。 晚饭要冷,然后最后一个号码的人要大家握手。

  2. 我们将告诉每个人有多少参与者,并根据该值创建条件,以便每个人都将摇摇晃晃。 相等数量的平行手。 晚餐会很冷,因为参与者数学不好。 (在这种情况下,人们可以像其他人一样行事)

我们还可以将人换成数字,并摇晃以进行比较,乘法等。问题是,我们希望在凉爽之前吃晚餐,等待一个线程或进行很多条件会减慢该过程。

还有其他更有效的方法吗?

我不确定您有多少会受到“数学不好”的约束,但是您可以看看如何自动生成体育联赛时间表 ,其良好答案是http://en.wikipedia.org/wiki/ Round-robin_tournament

在确定同步原语的效率如何时,您需要分别跟踪等待滞后进程追赶所花费的时间以及同步本身所花费的时间。 如果您实际上是在花时间等待落后者赶上,则需要加快它们的速度(例如,通过更均匀地分散工作)或避免等待它们的必要-加快每个人都在等待其他人之后可能发生的情况没有太大帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM