objective-c - Objective-c中多线程下载单个文件

标签 objective-c multithreading cocoa

我有一个带有对象“Chunk”的数组,如下所示:

typedef enum
{
Connecting = 0,
Downloading,
Finished,
Error
} State;

@interface Chunk : NSObject

@property (atomic) uint64_t startingByte;
@property (atomic) uint64_t endingByte;
@property (atomic) NSString *md5;
@property (atomic) State *chunkState;

@end

还有一个 Download 对象,它保存文件的链接、文件的大小和下载的字节数。下载对象有一个数组作为属性(保存 block )。

例如,在 6 个线程中下载文件的最佳方式是什么?每个线程一次下载一个 block (最后合并它们的想法)。我应该使用 gdc 还是某种队列系统?

最佳答案

鉴于网络通常是瓶颈,从单个服务器同时下载多个 block 不会更快。事实上,由于争用,它可能会变慢。萨法里等等,将开始多次下载到不同服务器,因为许多网页内容可以在下载完成之前呈现,并且与每个不同服务器之间存在协商成本,这些都不太可能适用于本案。

如果您确实需要这样做,最好的选择是使用内置类来使用多个异步 URL 连接,并让系统自行处理并发性。

关于objective-c - Objective-c中多线程下载单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720120/

相关文章:

objective-c - 如何在 UIScrollView 中禁用垂直滚动(Obj-C)

iphone - 当应用程序在 iOS 中进入挂起模式时如何调用函数?

iOS9 Objective-C 使用定时器在后台运行 GPS

c++ - 如何一直运行固定数量的线程

c++ - 尝试关闭 OpenCV 窗口无效

java - 创建线程来运行算法播放器

cocoa - NSCollectionView 可以自动调整其 subview 的宽度以显示一列

objective-c - 如何将文本添加到不可编辑的 TextView

cocoa - Swift 中的数组如何知道它是否包含元素?

iphone - 基于 NSString 序列的 Word 输出