如何通过多线程概念下载单个文件

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 将在后台执行请求。您不应该启动单独的线程。这应该没有必要。 我认为总下载时间不会减半,因为它受限于总带宽。

以上是关于如何通过多线程概念下载单个文件的主要内容,如果未能解决你的问题,请参考以下文章

如何通过多线程使用socket和pyqt避免数据丢失

基于SmartThreadPool线程池技术实现多任务批量处理

Python通过多线程实现 `异步`

java 多线程

是否有可能以某种方式同时在 ZMQ 中使用 Send/Recv(通过多线程)?

通过多线程(任务)运行方法的有效方法[重复]