通过拆分网络操作并解析到单独的线程是否有好处?我意识到两者都应该在非 UI 线程上执行;那不是我的问题。网络操作是否应该在网络线程上运行,然后将数据传递给解析线程进行解析?
以下是我看到的一些权衡:
亲
- 两种类型的操作不能互相阻塞(?)
- 这两种类型的操作可以放在不同的线程池中,分别调优
骗局
- 上下文切换可能会引入一些延迟
- 更多线程,更复杂
- 流解析变得困难/不可能
通过拆分网络操作并解析到单独的线程是否有好处?我意识到两者都应该在非 UI 线程上执行;那不是我的问题。网络操作是否应该在网络线程上运行,然后将数据传递给解析线程进行解析?
以下是我看到的一些权衡:
亲
骗局
你自己几乎已经回答了这个问题。真的不会有,除非您正在执行的解析需要很长时间。网络操作几乎总是会成为应用程序的瓶颈,因此请考虑权衡您正在执行的处理是否会减少线程可能从 Internet 下载的宝贵时间。
对于解析需要几微秒到几毫秒的大量应用程序,我看不到用户有太多明显的差异。如果您的解析需要相当长的时间,您可以创建一个单独的解析线程,就像您说的那样,并在它们之间创建生产者/消费者关系。这会给您的应用程序增加相当多的复杂性,除非您执行了某种分析以确定这是一个问题,否则我认为这是不值得的。
确保您没有对您的应用程序进行过早的优化,并且您已经对其进行了分析(或确定)以确定这是否是必要的。:)