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 beNULL. - 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 specifyNULLfor 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.