我在iOS上有一个想要从服务器下载数据的应用程序。数据不过是简单的文本文件。我想并行下载这些文件。 如果要在一个nsurlsession下创建多个nsurlsession实例或多个任务(NSURLSessionTasks),我会感到困惑。
我确实知道nsurlsession API是线程安全的。我在这里的基本困惑是关于以下内容:
我的NsurlsessionConfiguration在整个时间里都是一样的。因此,理想情况下,我可以为每个文件使用相同的NSURLSession实例。 但是,并行创建多个NSURLSessionTasks实例是否有意义? 或者更好的方法是采用新的NSURLSession来实现并行性。
我很困惑地理解同一NSURLSession中的每个NSURLSessionTask是创建新端点还是将其序列化。
答案 0 :(得分:1)
一个包含许多任务的会话(每个请求一个)将同时安全地工作。客户端是跨多个服务器发出请求还是向单个服务器发出请求,只要并发小于会话配置的一部分HTTPMaximumConnectionsPerHost
,就没什么区别。
任务并行运行。 (实际上,很难在文档中找到这些单词显式出现的位置,但含义here很好)。
请注意,会话配置具有delegateQueue
。理由是-因为会话任务是同时运行的-应用程序级别需要对结果的处理进行序列化,以免两个 parallel 任务通过委托彼此相邻。