Creates a new dispatch queue to which you can submit blocks.


dispatch_queue_t dispatch_queue_create(const char *label, dispatch_queue_attr_t attr);



A string label to attach to the queue to uniquely identify it in debugging tools such as Instruments, sample, stackshots, and crash reports. Because applications, libraries, and frameworks can all create their own dispatch queues, a reverse-DNS naming style (com.example.myqueue) is recommended. This parameter is optional and can be NULL.


In macOS 10.7 and later or iOS 4.3 and later, specify DISPATCH_QUEUE_SERIAL (or NULL) to create a serial queue or specify DISPATCH_QUEUE_CONCURRENT to create a concurrent queue. In earlier versions, you must specify NULL for this parameter.

Return Value

The newly created dispatch queue.


Blocks submitted to a serial queue are executed one at a time in FIFO order. Note, however, that blocks submitted to independent queues may be executed concurrently with respect to each other. Blocks submitted to a concurrent queue are dequeued in FIFO order but may run concurrently if resources are available to do so.

If your app isn’t using ARC, you should call dispatch_release on a dispatch queue when it’s no longer needed. Any pending blocks submitted to a queue hold a reference to that queue, so the queue is not deallocated until all pending blocks have completed.

See Also

Creating a Dispatch Queue


Returns the serial dispatch queue associated with the application’s main thread.


Returns a system-defined global concurrent queue with the specified quality-of-service class.


Creates a new dispatch queue to which you can submit blocks.


A dispatch queue that executes blocks serially in FIFO order.


A dispatch queue that executes blocks concurrently.


A lightweight object to which your application submits blocks for subsequent execution.


A dispatch queue that is bound to the app's main thread and executes tasks serially on that thread.


A dispatch queue that executes tasks concurrently using threads from the global thread pool.


A dispatch queue that executes tasks serially in first-in, first-out (FIFO) order.


A dispatch queue that executes tasks concurrently and in any order, respecting any barriers that may be in place.