[libdispatch-dev] Quality of service changes to the default priority queue

Thomas Clement tclementdev at free.fr
Wed Mar 16 16:52:05 PDT 2016

Starting with 10.10, it seems the default priority queue has changed meaning from a middleground priority queue into a special queue with no specific priority attached. One consequence is that a default priority queue will now inherit the quality of service from the queue that submits the block (see DISPATCH_BLOCK_INHERIT_QOS_CLASS).

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
	// Code A
	dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
		// Code B

So code like this used to execute Code A in background priority and Code B in default priority. Now it executes both in background priority. So it seems this change breaks backward compatibility with existing code intent.

Is there any suggestion as how to deal with this and potentially revert to the old behavior (if at all possible), considering the code must deploy back to 10.9.


More information about the libdispatch-dev mailing list