私は初めてNSoperation
です。NSoperation
シングルショットオブジェクトです。
どうすれば複数の操作を同時に達成でき
NSoperation
ますか?なくても可能
NSoperationQueue
ですか?NSoperationQueueを使用しても、FIFO形式の操作を実行しますが、どのように並行して実行されますか?
私は初めてNSoperation
です。NSoperation
シングルショットオブジェクトです。
どうすれば複数の操作を同時に達成できNSoperation
ますか?
なくても可能NSoperationQueue
ですか?
NSoperationQueueを使用しても、FIFO形式の操作を実行しますが、どのように並行して実行されますか?
並行操作(つまり、呼び出しスレッドに対して非同期で実行される操作)を実装する場合は、追加のコードを記述して、操作を非同期で開始する必要があります。たとえば、別のスレッドを生成したり、非同期システム関数を呼び出したり、その他のことを行って、start メソッドがタスクを開始し、すぐに、おそらくタスクが終了する前に戻るようにすることができます。
ほとんどの開発者は、並行操作オブジェクトを実装する必要はありません。操作を常に操作キューに追加する場合は、同時操作を実装する必要はありません。非並行操作を操作キューに送信すると、操作を実行するスレッドがキュー自体によって作成されます。したがって、非並行操作を操作キューに追加しても、操作オブジェクト コードは非同期で実行されます。同時操作を定義する機能は、操作を操作キューに追加せずに非同期で実行する必要がある場合にのみ必要です。
同時実行プログラミング ガイド - 同時操作と非同時操作のセクションを参照してください。
また、NSOperation による同時実行の管理もお読みください。
通常、操作を操作キュー(NSOperationQueue クラスのインスタンス) に追加することによって、操作を実行します。
NSOperationQueueクラスは、一連のNSOperationオブジェクトの実行を規制します。キューに追加された操作は、明示的に取り消されるか、そのタスクの実行が終了するまで、そのキューに残ります。キュー内の (ただしまだ実行されていない) 操作は、優先度レベルと操作オブジェクト間の依存関係に従って編成され、それに応じて実行されます。アプリケーションは、複数の操作キューを作成し、それらのいずれかに操作を送信できます。
オペレーション キューは、そのオペレーションを二次スレッドで実行することによって直接実行するか、libdispatch ライブラリを使用して間接的に実行します。
NSOperationの詳細についてはこちらを、NSOperationQueue の詳細についてはこちらをご覧ください。