ここで不変のコレクションを暴こうとしています。ImmutableHashSet<Subscription>
私の攻撃のポイントは、サブスクリプションを管理する従来の pub-sub イベント ブローカーです。
サブスクライブ操作は次のようになります
var s = new Subscription(this, subscriber);
subscriptions = subscriptions.Add(s);
パブリッシュ操作は次のようになります
foreach (var s in subscriptions)
s.Subscriber.OnNext(args);
subscriptions
ただし、パブリッシュ操作が行われている間に誰かがサブスクライブし、変数が置き換えられると仮定してみましょう。foreach
ループは正しく機能するでしょうか、それとも完全に壊れているでしょうか? (もしそうなら、これを修正するために何ができますか?) ありがとう。