Returns attributes suitable for creating a dispatch queue with the desired quality-of-service information.


dispatch_queue_attr_t dispatch_queue_attr_make_with_qos_class(dispatch_queue_attr_t attr, dispatch_qos_class_t qos_class, int relative_priority);



A queue attribute value to be combined with the quality-of-service class. Specify DISPATCH_QUEUE_SERIAL if you want submitted tasks to be scheduled serially or DISPATCH_QUEUE_CONCURRENT if tasks may be scheduled concurrently. If you specify NULL, this function creates a serial queue.


The quality of service you want to give to tasks executed using this queue. Quality-of-service helps determine the priority given to tasks executed by the queue. Specify one of the values QOS_CLASS_USER_INTERACTIVE, QOS_CLASS_USER_INITIATED, QOS_CLASS_UTILITY, or QOS_CLASS_BACKGROUND. Queues that handle user-interactive or user-initiated tasks have a higher priority than tasks meant to run in the background.


A negative offset from the maximum supported scheduler priority for the given quality-of-service class. This value must be less than 0 and greater than or equal to QOS_MIN_RELATIVE_PRIORITY, or else this function returns NULL.

Return Value

An attribute value that may be passed to the dispatch_queue_create function when creating a dispatch queue.


Call this function prior to calling the dispatch_queue_create function when you want to create a dispatch queue with a specific quality-of-service level. This function combines the queue type attributes with the quality-of-service information you specify and returns a value that you can pass to the dispatch_queue_create function. The quality-of-service value you specify using this function takes precedence over the priority level inherited from the dispatch queue’s target queue.

The global queue priorities map to the following quality-of-service classes:

See Also

Prioritizing Work and Specifying Quality of Service