操作の違い& Cocoaのスレッド
-
06-07-2019 - |
質問
Objective-Cを学習しています。ビデオ処理アプリケーションを開発します。
アップルの開発者ガイドを読んでいて、Operationオブジェクトに遭遇しました。操作と操作の違いを明確にする必要があります。スレッド、欠点、利点、ユースケース。
私が読んだことから、操作はアプリケーションプロセス/タスク管理の高レベルです。 NSOperationQueueは、操作リソースと同時実行性を処理できます。
私が理解していないのは、Operationをスレッドで直接実行できることです。この概念についてはあまり明確ではありません。運用と運用の違いを明確にするつもりはありません。スレッド。
この2つに関するできるだけ多くの情報/背景を提供してください。
多くの皆さんに感謝します。
解決
NSOperation
とスレッドの違いは、抽象化の1つです。スレッドは、複数の「スレッド」を実行するための低レベル(オペレーティングシステムレベル)の構造です。コードの同時。 Cocoaは NSThread
APIを提供しますが、本質的には pthread
s APIのラッパーです。 NSOperation
は、実行するタスクの高レベルの抽象化です。 NSOperationQueue
は、利用可能なCPUを最大限に活用するために、 NSOperations
のキューの実行をスケジュールします。マルチコアシステムでは、 NSOperationQueue
が保持するスレッドのプールを使用して、複数の NSOperations
が同時に実行されます。この高レベルAPIを使用する利点は、「操作」について考えることができることです。あなたはそれらをスケジュールする方法よりも実行したいです。欠点(したがって、 NSThread
を直接使用する利点)は、スレッドのスケジューリングと、スレッドと他のスレッドとの間の通信をより細かく制御できることです(-[NSObject performSelector:withObjectを参照) :onThread:]
)。ビデオ処理などのアトミックタスクでは、 NSOperation
が最適です。