我有一个应用程序,它向一个数据服务器发出多个URL请求,以便下载用户数据。我试图通过并行发出10个请求来加快下载时间。我尝试了几种不同的方法来实现这一点,但是我一直拥有的结果是,虽然我同时发送了10个请求(几乎),但我每次只接收一个数据。这意味着总下载时间与我按顺序发出所有请求的时间相同。这是我尝试过的不同的东西。
。
这两种情况下正确下载数据都没有问题,但它们都不会像我预期的那样快速地接收数据。服务器响应请求所需的时间大约为0.5秒-1.0秒。因此,如果请求是真正并行的,我将期望在最多1秒内收到所有10个响应。在这两种方法中,我都注意到NSURLConnections都是在大约5毫秒内启动的,但是connect:didReceiveResponse请求的方法被一个接一个地调用,间隔约为0.7秒,就好像请求是串行的一样。
我是否误解了NSURLConnections或NSOperationQueues的工作方式?任何帮助都将不胜感激。谢谢!
发布于 2012-06-04 18:59:55
如果您使用几个NSURLConnection向同一台服务器提出请求,那么您实现的两种方式几乎不会有任何区别。但是,如果您正在与10个不同的服务器建立10个连接,那么其中一个或两个服务器可能会非常慢,并且需要时间来响应请求,那么第二种方法将比第一种方法花费很长的时间。在第二种方法中,下一个请求将只在从当前方法获得响应后发送,但在第一个方法中,由于请求是并行运行的,所以请求将在得到响应后立即完成,下一个请求将被排队。在这种情况下,如果maximumConcurrentOperation = 1,两种方法都会给出相同的结果。
Approach 2:
<--t1--><--t2--><--t3--><------t4------><--t5--><--------t6--------><--t7--><--t8-->
<----------------------------------Total Time-------------------------------------->
Approach 1: maximumConcurrentOperation = 2
<--t1-->
<--t2-->
<--t3-->
<------t4------>
<--t5-->
<--------t6-------->
<--t7-->
<--t8-->
<--------------Total Time------------------>
希望这能消除你的疑虑。
https://stackoverflow.com/questions/10841903
复制相似问题