Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 异步下载多个文件与同步下载多个文件_Ios_Multithreading_Asynchronous_Download - Fatal编程技术网

Ios 异步下载多个文件与同步下载多个文件

Ios 异步下载多个文件与同步下载多个文件,ios,multithreading,asynchronous,download,Ios,Multithreading,Asynchronous,Download,我有一个iOS应用程序,在播放器启动之前,我需要下载多个音频文件。(所有文件都需要先下载,因为它们都作为多音轨歌曲同时播放。) 我知道从主线程异步下载的好处(不阻塞UI等),但我想知道从彼此异步下载每个文件与在同一后台线程上下载所有文件相比是否有任何好处。如果有差异,哪种方法下载所有文件最快?这实际上是网络带宽的问题。如果您试图同时下载10个文件,很可能需要的时间与每次下载相同的10个文件所需的时间相同(可能更长) 用户的互联网连接每秒只允许这么多数据。假设每次下载都达到最大吞吐量,一次下载多个

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


我知道从主线程异步下载的好处(不阻塞UI等),但我想知道从彼此异步下载每个文件与在同一后台线程上下载所有文件相比是否有任何好处。如果有差异,哪种方法下载所有文件最快?

这实际上是网络带宽的问题。如果您试图同时下载10个文件,很可能需要的时间与每次下载相同的10个文件所需的时间相同(可能更长)

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


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

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