【问题标题】:Difference between Reactive Schedulers io and computation?反应式调度程序 io 和计算之间的区别?
【发布时间】:2017-02-15 18:40:34
【问题描述】:
我的应用使用 RxAndroidBle 异步接收来自 BLE 外设的数据包,并将它们组装成一个更大的帧。似乎 Schedulers.io() 是合适的,但我们被警告(没有解释)不要在 io 调度程序上进行“计算”。简单地将字节从一个数组复制到另一个数组算作“计算”吗?如果是这样,我是否需要创建单独的调度程序,一个用于接收数据包,另一个用于组装帧?那会是什么样子?
【问题讨论】:
标签:
rx-java
rx-android
rxandroidble
【解决方案1】:
将字节从一个数组复制到另一个不算作“计算”,因为它不是 CPU 密集型工作(您等待 io 的时间更长,然后您正在执行内存复制),为 CPU 密集型工作而设计的计算调度程序,其线程数受 CPU 内核的限制。
而 io 调度程序不受线程限制,因此适用于 io 阻塞操作。
您可以在此处阅读有关差异的详细说明:
rxJava Schedulers Use Cases