0

私はObjective-Cを学んでおり、ビデオ処理アプリケーションを開発します。

アップルの開発者ガイドを読んでいて、Operationオブジェクトに遭遇しました。操作とスレッドの違い、欠点、利点、ユースケースについていくつか説明する必要があります。

私が読んだことから、操作はより高いレベルのアプリケーションプロセス/タスク管理です。NSOperationQueueは、操作リソースと同時実行性を処理できます。

私が理解していないのは、操作をスレッドで直接実行できるということです。この概念についてはあまり明確ではありません。操作とスレッドの違いを明確にするつもりはありません。

この2つについてできるだけ多くの情報/背景を教えてください。

みなさん、ありがとうございました。

4

1 に答える 1

2

とスレッドの違いはNSOperation、抽象化の1つです。スレッドは、コードの複数の「スレッド」を同時に実行するための低レベル(オペレーティングシステムレベル)の構造です。CocoaはNSThreadAPIを提供しますが、基本的にはsAPIのラッパーpthreadです。NSOperation実行したいタスクの高レベルの抽象化です。使用可能なCPUを最大限に活用するためNSOperationQueueに、のキューの実行をスケジュールします。NSOperationsマルチコアシステムでは、を維持するNSOperationsスレッドのプールを使用して、複数が同時に実行されます。NSOperationQueueこの高レベルのAPIを使用する利点は、スケジュール方法ではなく、実行する「操作」について考えることができることです。不利な点(したがって、使用することの利点NSThread直接)は、スレッドのスケジューリングと、スレッドと他のスレッド間の通信をより細かく制御できることです(を参照-[NSObject performSelector:withObject:onThread:])。ビデオ処理などのアトミックタスクにNSOperationは、おそらく最適です。

于 2009-06-22T21:30:53.030 に答える