NSOperation
とを使い始めたところNSOperationQueue
です。それらを使用するためのより良い方法を知りたいです。
アプリ全体に対してキューを 1 つだけ作成する必要がありますか?それとも、特定の種類のタスクごとにキューを 1 つ作成する必要がありますか? 非常に多くのキューを作成すると、どのような影響がありますか?
NSOperation
とを使い始めたところNSOperationQueue
です。それらを使用するためのより良い方法を知りたいです。
アプリ全体に対してキューを 1 つだけ作成する必要がありますか?それとも、特定の種類のタスクごとにキューを 1 つ作成する必要がありますか? 非常に多くのキューを作成すると、どのような影響がありますか?
それは、それらを何に使用しているかによって異なります。パフォーマンスのためにそれらを使用し、CPU を最大限に活用している場合、予想されるコア数をはるかに超えることはほとんど意味がありません。
UI の応答性を維持するためだけに処理をオフロードしているが、パフォーマンスを最大化することに特に関心がない場合は、簡単にするためにデフォルトのバックグラウンド キューを使用します。
外部イベント (ネットワーク要求の完了など) でアクションをトリガーするためにシーケンシャル バックグラウンド キューを使用している場合、実行しようとする多くのスレッドにつながらないため、束を使用しても害はありません。同時に。
操作キューを使用して設計を簡素化できる多くのインスタンスがあります。
NSOperationQueues は GCD の上に構築されており、私の知る限り、同時に実行しようとしない限り、キューの負荷によるパフォーマンスへの影響はありません。
Apple Concurrency Guide のExecuting Operationsセクションを読んでください。もちろん、実装とアプリケーションによって異なりますが、要約すると、同時に実行できる NSOperations の数は一定量に限られ、NSOperationQueues の数を増やしても何のメリットもありません。そのため、設計で許容できる場合は、1 つ以下のキューを選択することをお勧めします。