---
title: dispatch_queue_attr_make_with_qos_class
framework: dispatch
role: symbol
role_heading: Function
path: dispatch/dispatch_queue_attr_make_with_qos_class
---

# dispatch_queue_attr_make_with_qos_class

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

## Declaration

```occ
extern dispatch_queue_attr_tdispatch_queue_attr_make_with_qos_class(dispatch_queue_attr_t attr, dispatch_qos_class_t qos_class, int relative_priority);
```

## Parameters

- `attr`: A queue attribute value to be combined with the quality-of-service class. Specify doc://com.apple.dispatch/documentation/Dispatch/DISPATCH_QUEUE_SERIAL if you want submitted tasks to be scheduled serially or doc://com.apple.dispatch/documentation/Dispatch/DISPATCH_QUEUE_CONCURRENT if tasks may be scheduled concurrently. If you specify NULL, this function creates a serial queue.
- `qos_class`: 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.
- `relative_priority`: 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

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

## Discussion

Discussion 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: DISPATCH_QUEUE_PRIORITY_HIGH maps to the QOS_CLASS_USER_INITIATED class. DISPATCH_QUEUE_PRIORITY_DEFAULT maps to the QOS_CLASS_DEFAULT class. DISPATCH_QUEUE_PRIORITY_LOW maps to the QOS_CLASS_UTILITY class. DISPATCH_QUEUE_PRIORITY_BACKGROUND maps to the QOS_CLASS_BACKGROUND class.

## See Also

### Configuring Queue Execution Parameters

- [dispatch_queue_attr_t](dispatch/dispatch_queue_attr_t.md)
- [dispatch_queue_get_qos_class](dispatch/dispatch_queue_get_qos_class.md)
- [dispatch_qos_class_t](dispatch/dispatch_qos_class_t.md)
- [dispatch_queue_attr_make_initially_inactive](dispatch/dispatch_queue_attr_make_initially_inactive.md)
- [dispatch_queue_attr_make_with_autorelease_frequency](dispatch/dispatch_queue_attr_make_with_autorelease_frequency.md)
- [dispatch_autorelease_frequency_t](dispatch/dispatch_autorelease_frequency_t.md)
