0

リモートサーバーからの最適化された画像ダウンロードメカニズムの実装に取り​​組んでいます。

私は2つの異なるアプローチを考えました。


1. 1 つの新しいスレッドを作成し、その単一のスレッドで非同期の方法ですべての画像をダウンロードします。
2. 各画像をダウンロードするためのスレッドを作成します。50個の画像をダウンロードしたい場合、それらの画像をダウンロードするための50個のスレッドがあります。

設計と最適化の観点から、どちらのアプローチが優れていますか?

ありがとう、
ジム。

4

1 に答える 1

1

どちらのソリューションにも落とし穴があります。

1) スレッドが 1 つしかないということは、一度に 1 つのイメージしかダウンロードできないということですか? これは非効率なようです

2) 一度に 1 つのダウンロードを行うのは悪い考えであるのと同じ理由で、50 個のイメージを同時にダウンロードするのはパフォーマンスの悪い考えであり、すべてが遅くなります。また、データをダウンロードするスレッドがシステムのリソースを消費することも考慮してください (ネットワーク I/O、ディスク I/O など)。

ホイールを再発明せず、キューのココア/ココアタッチ実装であるNSOperationQueueを使用することをお勧めし ます。つまり、いくつの操作を追加できますか (この場合、操作はイメージのダウンロードです)、指定できます同時操作の最大数 (maxConcurrentOperationCountプロパティ経由)。

NSOperationQueue はすべてのマルチスレッド処理を処理し、iOS 4 以降では GCD を使用して操作を実行します。

于 2012-07-13T09:54:17.383 に答える