2

假设有不同组的科学家(医学)提供紧急票。当公共池(组)的紧急票到达时,任何时候都只允许一名科学家领取票,而其他人可以或将自动收到该特定人员正在处理票的通知。

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

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

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


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

4

2 回答 2

3

你需要的是一个队列。

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

  • System.Collections.Generic.Queue,用于单线程入队或出队。您还可以使用锁来保护它以进行并发访问。
  • VS10 中的并发队列,用于多线程的放置和获取
  • MSMQ 的排队功能,在使用分布式设计时特别有用
  • 一个 SQL Server 数据库,在使用分布式设计时也很有趣

对于通知,是的,需要发布/订阅机制。同样,那里有选择。

于 2009-08-20T19:19:34.007 回答
2

对我来说,消息传递/排队很合适

于 2009-08-20T19:10:41.420 回答