我有一个带有对象“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/