该文档指出:
“对于每个观察者,注册的中间观察对象不是线程安全的。也就是说,来自源的观察不能在不同的线程上同时触发。”
这也适用于Observable.pairwise<'T>
和Observable.scan<'U,'T>
。
鉴于 Observable.merge 不是线程安全的,以一种会产生意外后果的方式使用 Observable.merge 的示例是什么?
该文档指出:
“对于每个观察者,注册的中间观察对象不是线程安全的。也就是说,来自源的观察不能在不同的线程上同时触发。”
这也适用于Observable.pairwise<'T>
和Observable.scan<'U,'T>
。
鉴于 Observable.merge 不是线程安全的,以一种会产生意外后果的方式使用 Observable.merge 的示例是什么?
根据源代码,如果观察者都OnCompleted
在不同的线程上触发,那么合并的观察者可能无法完成。
一般来说,线程安全表示使用来自不同线程的功能不会导致竞争条件或死锁。在这种特殊情况下,我猜测观察结果可能会相互覆盖,或者以可能导致崩溃或其他不稳定状态的方式交错执行。