我试图在这里揭穿不可变的集合。我的攻击点是我们维护ImmutableHashSet<Subscription>
订阅的经典发布-订阅事件代理。
然后订阅操作将执行
var s = new Subscription(this, subscriber);
subscriptions = subscriptions.Add(s);
并且发布操作会执行类似的操作
foreach (var s in subscriptions)
s.Subscriber.OnNext(args);
但是,让我们假设当发布操作发生时,有人订阅,变量subscriptions
被替换。循环会foreach
正常工作,还是会完全坏掉?(如果是这样,可以做些什么来解决这个问题?)谢谢。