2017-05-18 4 views
1

「Executing」状態のオペレーションは、エンキューされた「Ready」状態の別のオペレーションに依存する可能性がありますか?`Executing '状態のオペレーションを他のオペレーションに追加する

操作が「実行中」状態で、B.addDependency(operationA)(B操作がエンキューされ、「準備完了/保留中」状態)を実行します。私の調査から

ことが可能であるが、私はこのケースに

+0

「NSOperationQueue」を使用している理由を聞くことができますか?あなたは 'DispatchQueue'を使うほうがはるかに簡単です。それは、Swiftのために特別に改良されました。より広く使用されていて、より柔軟です( 'NSOperationQueue'は機能が少ない' DispatchQueue'の単なるラッパーにすぎません)。 – Alexander

+0

はい私はOperationQueueを使用して、DispatchQueueがOperationQueue私は好奇心のためだけにそれが可能かどうか尋ねました:) – Robert

+0

@Alexander - 操作キューがディスパッチキューよりはるかに簡単なものがたくさんあります。依存関係を追加するだけでなく(この質問では)、すばらしい個別の操作でタスク(特に非同期オブジェクト)をラップします。並行性の拘束度。ディスパッチキューは、特にシンプルなものではしばしば "実行"ツールですが、操作キューにはるかに適したジョブがたくさんあることに同意します。 – Rob

答えて

1

に関する任意のドキュメントを見つけることができませんでしたはい、あなたはまだ開始されていないキューに入れられた操作に依存関係を追加することができます。

注:依存関係を追加する操作はまだ開始されていませんが、それがあった場合は、依存関係"has no practical effect"と述べました。このため、可能であれば、操作をキューイングする前に依存関係を追加して、操作が開始されてから依存関係を追加するまでの競合状態を避けることが一般的です。

+0

もう1つの制限は、2回の操作間に依存関係を複数回追加しないようにする必要があり、循環依存(AがBに依存し、BがAに依存する)を避ける必要があるということです。 – Rob

関連する問題