Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reorder NSOperationQueue

I'm looking for a way to reorder an NSOperationQueue.

I could cancel all the operations and toss them back in using the order I want, but I was hoping for something a little bit cleaner. Any thoughts?

like image 639
mousebird Avatar asked Jan 26 '10 18:01

mousebird


2 Answers

The major difference between NSOperationQueue and the underlying GCD queues is that NSOperations support dependencies between operations. NSOperationQueue will not schedule an operation until all of its dependencies have completed. Of the available operations, the highest priority operation is chosen to run next.

Since the operation queue may run several operations simultaneously (according to maxConcurrentOperations), there is not strict sense of order on the queue. You would be much better off using the dependencies API or changing operation prorities.

I believe that you can change dependencies and priorities after adding an operation to the queue.

like image 194
Barry Wark Avatar answered Oct 18 '22 11:10

Barry Wark


There is no ability to re-order operations in a queue. If you need to express that one operation must come after another, use the dependencies API to do so.

See the NSOperationQueue documentation for more information. The first two paragraphs of the overview discuss dependencies.

like image 32
bbum Avatar answered Oct 18 '22 13:10

bbum