如何通过多线程概念下载单个文件
Posted
技术标签:
【中文标题】如何通过多线程概念下载单个文件【英文标题】:How can download single file by multithreading concept 【发布时间】:2017-09-04 06:44:32 【问题描述】:我有一个大的单个文件,但我想用 2 个并发线程下载这个文件,两个线程将逐块下载,并将相同的内容通过连接存储在本地文件中。
我不确定在 ios 中是否可行。如果是,请告诉我如何实现。代码不是必需的。分享这个概念就可以了,但技术术语应该在 iOS 的上下文中。众所周知,NSURLSession 是 iOS 支持的 API。
【问题讨论】:
为什么要下载同一个文件两次? 你可以说这是一种要求.....我在看它是否可能...... 是的,但如果这是你的希望,它不会更快 是的,这是可能的!您可以同时生成两个单独的请求! @Lion - 你看到了吗will be stored in local files by concatenation
【参考方案1】:
您可以使用范围请求下载多个部分的单个文件。为此,您必须在请求中设置范围标头,例如。 g.: Range: bytes=200-1000
只会加载文件的 200 到 1000 字节,但是你应该检查你的服务器是否支持。
您可以使用addValue(_:forHTTPHeaderField:)
或addValue:forHTTPHeaderField:
分别在NSMutableRequest
中设置(范围)标题。如果您使用NSURLSession
发送请求,它们将自动并行执行。
【讨论】:
更具体的......并给出结果...... :) 你知道为什么这很重要......使用 2 个单独的线程而不是一个线程会更好吗? ..??? 也许我是对的...如果一个线程需要 10 分钟来下载任务,但如果 2 个线程需要 5-5 分钟来下载任务,我们可以在 5 分钟内完成整个下载时间...谢谢 macmoonshine...NSURLSession
将在后台执行请求。您不应该启动单独的线程。这应该没有必要。
我认为总下载时间不会减半,因为它受限于总带宽。以上是关于如何通过多线程概念下载单个文件的主要内容,如果未能解决你的问题,请参考以下文章
基于SmartThreadPool线程池技术实现多任务批量处理