C# - 发布者订阅者解决这个问题吗?
-
19-09-2019 - |
题
假设有不同的科学家(医学)小组提供紧急服务。当公共泳池(团体)的紧急门票到达时, 任何时候只允许一名科学家领取票 , ,而其他人可以或将会自动收到该特定人员正在处理票证的通知。
笔记 :一个人可以处理多张具有不同截止日期的票证。
当票证过于复杂而无法解决时,领取票证的人可以将其交给同组或不同组的其他人。 在这种情况下,应立即向其他人通报移交的原因。
在极端需要的情况下,单票上的任务可以分解并分配给小组。 如果任务被拆分并在单票证组之间共享,则共享票证的人员将不允许拿起任何新票证或处理其他现有票证(这样做,他会收到通知,他正在处理共享票证)票)。
我的问题是:
观察者模式是通知服务的最佳选择还是其他设计模式可以顺利处理它(无死锁)?
解决方案
你需要的是一个队列。
根据您的实现方式,您可以使用
- System.Collections.Generic.Queue, ,对于单线程入队或出队很有用。您还可以使用并发访问锁来保护它。
- VS10中的并发队列, ,对于多线程放置和获取
- MSMQ 的排队功能,在使用分布式设计时特别有用
- SQL Server 数据库,在使用分布式设计时又很有趣
对于通知,是的,需要发布/订阅机制。同样,那里还有选择。
- System.Event 提供了在单个进程中使用的基本发布/订阅机制
- 您可以构建更大的发布/订阅系统 用于基于WCF的分布式使用。
其他提示
在我看来,消息传递/排队是一个不错的选择
不隶属于 StackOverflow