在数字信号采集系统中,数据通常由一个线程推送到系统中的观察者中。
来自Wikipedia/Observer_pattern的示例:
foreach (IObserver observer in observers)
observer.Update(message);
例如,当来自例如 GUI 线程的用户操作要求数据停止流动时,您希望中断主体与观察者的连接,甚至一起处置观察者。
有人可能会争辩说:您应该停止数据源,并等待一个哨兵值来处理连接。但这会在系统中产生更多的延迟。
当然,如果数据泵线程刚刚询问了观察者的地址,它可能会发现它正在向被破坏的对象发送消息。
是否有人创建了一个“官方”设计模式来应对这种情况?他们不应该吗?