私はコンテンツをプッシュする頻度が高い Observable をサブスクライブしました。これらのコンテンツはネットワーク I/O からのものであるため、各プッシュはもともと異なるスレッドからのものでした。他のコンテンツは受信されないため、コード サンプルは次のようになります。
IDisposable dsp = null;
dsp = TargetObservable.Subscribe((incomingContent) =>
{
if (incomingContent == "something")
{
myList.Add(incomingContent);
dsp.Dispose();
}
else
{
otherList.Add(incomingContent);
}
});
今のところ、OnNext は明らかにスレッド セーフではありません。つまり、Observer が「何か」を取得し、Dispose() を呼び出す直前に、他のコンテンツがまだ着信して「otherList」に追加される可能性があります。 .)' 'onNext(...)' 全体。
これは私たちが望んでいないので、これを避けるためのアイデアはありますか? 私が考えることができる 1 つの方法は、(「ロック」を使用して) コンテンツを 1 つずつプッシュするように Observable を変更することです。これにより、パフォーマンスが大幅に低下するはずです。ありがとう。