1

通过拆分网络操作并解析到单独的线程是否有好处?我意识到两者都应该在非 UI 线程上执行;那不是我的问题。网络操作是否应该在网络线程上运行,然后将数据传递给解析线程进行解析?

以下是我看到的一些权衡:

  • 两种类型的操作不能互相阻塞(?)
  • 这两种类型的操作可以放在不同的线程池中,分别调优

骗局

  • 上下文切换可能会引入一些延迟
  • 更多线程,更复杂
  • 流解析变得困难/不可能
4

1 回答 1

1

你自己几乎已经回答了这个问题。真的不会有,除非您正在执行的解析需要很长时间。网络操作几乎总是会成为应用程序的瓶颈,因此请考虑权衡您正在执行的处理是否会减少线程可能从 Internet 下载的宝贵时间。

对于解析需要几微秒到几毫秒的大量应用程序,我看不到用户有太多明显的差异。如果您的解析需要相当长的时间,您可以创建一个单独的解析线程,就像您说的那样,并在它们之间创建生产者/消费者关系。这会给您的应用程序增加相当多的复杂性,除非您执行了某种分析以确定这是一个问题,否则我认为这是不值得的。

确保您没有对您的应用程序进行过早的优化,并且您已经对其进行了分析(或确定)以确定这是否是必要的。:)

于 2013-08-29T15:13:16.680 回答