通常、NSOperationQueue
は、プライオリティの低いタスクが実行されるまで、プライオリティの低いタスクは実行されません。このグラフ1000回の操作の履歴を追跡予備容量のあるNSOperationQueue?
下に示されているようしかし、操作多数のキューに迅速に添加した場合、時々操作キューは、オーバーロードすることができます。赤い線は、現在実行中のNSOperationQueueVeryLowPriority
優先度のタスクの数を示し、緑色の線は、待ち行列でアイドルであるNSOperationQueueNormalPriority
のタスクの数を示し、はであり、最後に青い線は、待ち行列。
この場合、NSOperationQueue
のデフォルトの最大同時実行性は64と思われます。これらの64個のスロットがいっぱいになると、優先度の高いタスクが存在しても実行されずに待機する必要があります。私の質問は、NSOperationQueue
を微調整する何らかの方法があるため、負荷がかかっても優先度の高い操作のためにいくつかの容量を予約していますか?
私の優先度の高い操作が通常の優先度の操作の後に実行されている関連問題があります。このスレッドでいくつかの答えを得るのを待つことができません! – raidfive
私は、自分のサブクラスを実装して予約された容量などを処理することを考えていました。しかし、私の状況では、必要なものはすべて、より小さいmaxConcurrentOperationCountでした。これにより、タスクは遅れが無視できる程度に遅くても十分に速く完了することができます(それぞれ64タスクにいくぶんゆっくりと実行されます)。 – Tony
はい、私は今日これを気づいた。私はシステムが64の並行タスクを実行することを決める理由がわからない...私はそれがそれを抑制し、他の人に優先権を与えると考えた。 – raidfive