See Also: DispatchQueue Members
Queues are the fundamental mechanism for scheduling blocks for execution within the Apple Grand Central Dispatch framework.
All blocks submitted to dispatch queues are dequeued in FIFO order. By default, queues created with the default constructor wait for the previously dequeued block to complete before dequeuing the next block. This FIFO completion behavior is sometimes simply described as a "serial queue." Queues are not bound to any specific thread of execution and blocks submitted to independent queues may execute concurrently. Queues, like all dispatch objects, are reference counted and newly created queues have a reference count of one.
The optional label argument is used to describe the purpose of the queue and is useful during debugging and performance analysis. By convention, clients should pass a reverse DNS style label. If a label is provided, it is copied. If a label is not provided, then Label property returns an empty C string. For example:
C# Example
var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");
Queues may be temporarily suspended and resumed with the functions DispatchQueue.Suspend() and DispatchQueue.Resume() respectively. Suspension is checked prior to block execution and is not preemptive.
Dispatch queue is System.Threading.SynchronizationContext aware and unless there is custom synchronization context set for the thread it will install its own synchronization context to ensure any context dispatch ends up on same dispatch queue.