这个模式/算法叫什么?获取订阅者的随机顺序,以便一次只有一个人可以做出反应

Car*_*los 5 c# algorithm design-patterns

我有一个问题,我在c#中有一个事件发布者,为一群订阅者提供全局资源.资源是竞争对手,因此有可能对所有消费者来说都不够.

想象的模型是一批到达市场的成分.许多厨师正在等待每种成分,并且必须决定是否购买每种成分.厨师们同意每个人都应该对每种成分都有所了解,并且他们不希望每个项目都有竞争,所以他们决定应该存在某种优先级系统.

1)这种情况有名称吗?

2)以公平的方式实现这一目标的好方法是什么,因此每个订阅者都有相同的机会获得该成分?请记住,是否要求资源的决定取决于订户.

3)注意优先级不需要固定优先级.如果您在每次活动前都有掷骰子,则可以每次创建一个订单.你也可以预先估算一下.这种解决方案有什么缺点吗?

无论如何,这不是一个功课问题.只是想知道是否有人已经看到这个或能够将一个通用解决方案转换为解决此问题的表单.

ole*_*sii 2

1)这种场景有名字吗?

是的,它被称为循环(如果我没理解错的话)

2)什么是公平地实现这一点的好方法,以便每个订阅者都有平等的机会获得成分?

系统越复杂,您应该越容易制定解决方案,KISS在这里效果非常好。实现循环算法。

3) 请注意,优先级不一定是固定的优先级。如果您在每次事件之前掷骰子,则每次都可以创建订单。您也可以重新计算一下。这种解决方案有什么缺点吗?

这个问题在大型可扩展系统和网络中已经存在多年(例如,请参阅此线程)。人们尝试了很多事情,但除非你真的知道自己在做什么,否则请使用简单的单回合策略。

循环法并不完美,并且肯定有其自身的缺点,但它也是最简单的解决方案。