“对于每个观察者,注册的中间观察对象不是线程安全的。也就是说,源不会在不同的线程上同时触发源的观察。”
这也适用于Observable.pairwise<'T>
和Observable.scan<'U,'T>
。
Observable.merge的一个例子是什么,如果它不是线程安全的,会以一种产生意想不到的后果的方式使用?
答案 0 :(得分:2)
基于source code,看起来如果观察者都在不同的线程上发射OnCompleted
,那么合并的observable可能无法完成。
答案 1 :(得分:0)
一般来说,线程安全表明使用来自不同线程的功能不会导致竞争条件或死锁。在这种特殊情况下,我猜测观察结果可能会相互覆盖,或者以可能导致崩溃或其他不稳定状态的方式交错执行。