C# - 发布商用户解决了这个问题?

时间:2009-08-20 19:08:37

标签: c# design-patterns publish-subscribe

假设有不同的科学家组(医疗)提供紧急罚单。 当紧急车票到达公共游泳池(团体)时, 任何时候只允许一名科学家拿起车票 ,而其他人可以或将会自动通知这个特别的人正在办理这张票。

注意:一个人可以处理不同截止日期的多张票。

当机票太复杂而无法解决时,拿起机票的人可以将其交给同一组或不同组中的其他人。 在这种情况下,这种移交的原因应该是立即传播给其他人。

极端需要单票的任务可以分解并在群组之间分配。 如果一个任务被拆分并在群组之间共享单票,那么共享票的人将不被允许拿起任何新机票或在其他现有机票上工作(这样做,他将被告知他正在处理共享机票)。


我的问题是:
Observer模式是通知服务的最佳选择,还是其他设计模式可以顺利处理(死锁自由)。?

2 个答案:

答案 0 :(得分:3)

您需要的是队列。

根据您的实施方式,您可以使用

  • System.Collections.Generic.Queue,对单线程入队或出列有用。您还可以通过锁定进行并发访问来保护它。
  • The concurrent Queue in VS10,用于多个线程放置和获取
  • MSMQ的排队功能,在使用分布式设计时尤其有用
  • SQL Server数据库,在使用分布式设计时再次感兴趣

对于通知,是的,需要发布/发布机制。再次,那里有选择。

答案 1 :(得分:2)

听起来像消息/排队很合适