【问题标题】:Downloading Multiple Files Asynchronously vs. Synchronously异步与同步下载多个文件
【发布时间】:2014-07-14 00:44:09
【问题描述】:

我有一个 iOS 应用程序,我需要在其中下载多个音频文件,然后播放器才能启动。 (所有文件都需要先下载,因为它们都作为多轨歌曲同时播放。)

我知道从主线程异步下载的优势(不阻塞 UI 等),但我想知道从彼此异步下载每个文件是否有任何优势,而不是全部在同一个后台线程。如果有区别,哪种方法可以最快地下载所有文件?

【问题讨论】:

  • 我建议在后台线程上一一下载,并在主线程上更新进度。你永远不知道你的用户会有什么样的连接,在慢速网络上同时下载会很慢。

标签: ios multithreading asynchronous download


【解决方案1】:

这实际上是网络带宽的问题。如果您尝试同时下载 10 个文件,很可能与一次下载相同的 10 个文件一样长(甚至可能更长)。

用户的互联网连接每秒只允许这么多数据。假设每次下载都达到最大值,那么一次下载多个文件意味着必须在文件之间分配最大吞吐量。

您最好的选择是设置一个并发操作队列。将每个下载排队作为单独的操作。然后通过设置操作队列进行实验,以支持从 1 到 n 的任意并发操作。在不同的时间多次进行测试,并跟踪完成所有下载所需的时间。看看哪个结果是最好的整体平均水平。请记住,使用慢速 2G 蜂窝网络连接的用户与使用超快家庭 Wi-Fi 连接的用户的结果可能不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多