0

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

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

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

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

4

1 回答 1

3

鉴于网络通常是瓶颈,从单个服务器同时下载多个块不会更快。事实上,由于争用,它可能会更慢。野生动物园等。al.,将开始多次下载到不同的服务器,因为很多网页内容可以在下载完成之前很好地呈现,并且每个不同的服务器都有协商成本,在这种情况下可能都不适用。

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

于 2012-07-30T12:28:27.407 回答