我有一个对象'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对象,它包含文件,大小和downloadedBytes的链接。下载对象有一个数组作为属性(保存块)。
下载文件的最佳方法是什么,例如6个线程?每个线程一次下载一个块(想法在最后合并它们)。我应该使用gdc还是某些队列系统?
答案 0 :(得分:3)
鉴于网络通常是瓶颈,从单个服务器同时下载多个块不会更快。事实上,由于争用,它可能会变慢。 Safari等。 al。,将开始多次下载到不同的服务器,因为很多网页内容可以在下载完成之前很好地呈现,并且每个不同的服务器都存在协商成本,这些都不适用于这种情况。
如果你确实需要这样做,最好的办法是使用内置类使用多个异步URL连接,让系统自己处理并发。