Contents

dispatch_queue_create

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

Declaration

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

Parameters

  • label:

    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.

  • attr:

    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.

Discussion

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