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

ファイルへのリンク、そのサイズ、およびdownloadedBytesを保持するDownloadオブジェクトもあります。ダウンロードオブジェクトには、プロパティとして配列があります(チャンクを保持します)。

たとえば6つのスレッドでファイルをダウンロードするための最良の方法は何ですか?各スレッドは一度に1つのチャンクをダウンロードします(最後にそれらをマージするという考え)。gdcまたはある種のキューシステムを使用する必要がありますか?

4

1 に答える 1

3

ネットワークが一般的にボトルネックであることを考えると、単一のサーバーから複数のチャンクを同時にダウンロードしても、それほど速くはなりません。実際、競合のために遅くなる可能性があります。サファリなど ダウンロードが完了する前に多くの Web ページ コンテンツがレンダリングされる可能性があり、異なるサーバーごとに交渉コストがかかるため、異なるサーバーへの複数のダウンロードを開始します。

本当にこれを行う必要がある場合は、組み込みのクラスを使用して複数の非同期 URL 接続を使用し、システム自体が同時実行を処理するようにするのが最善の策です。

于 2012-07-30T12:28:27.407 に答える