Grand Central Dispatch
GCD фреймворк, содержит в себе инструменты который позволяет нам комфортно управлять потоками, задачами для выполнения и ресурсами
Queue Queue - Является основным примитивом GCD. Queue это сущность который выполняет задачу, поступающий на него на одном или через нескольких потоков
Представьте себе кассу, В данном случае касса которое нас обслуживает - это поток вы - сама задача, а все вместе - очередь (Queue)
Очередь работает по принципу FIFO, таким образом первая задача на очереди будет первой направлена на выполнение на потоке

Очереди делятся на 2 типа:
serial (последовательная) – выполняет задачи последовательно (поочередно). До тех пор, пока задача не будет выполнена, поток не приступит к выполнения следующей задачи в очереди.
concurrent (параллельная) – выполняет задачи параллельно. Задачи, поступающие в concurrent очередь, могут выполняться одновременно на разных потоках.
Serial очередь обрабатывает задачи в каком порядке они были поступлены, по очередно
Сoncurrent очередь не гарантирует, что задачи будут выполнены в строгом порядке очереди.

Для того, чтобы создать очередь, нам необходимо создать объект типа DispatchQueue. Взглянем на декларацию инициализатора данного типа:
convenience init(
label: String,
qos: DispatchQoS = .unspecified,
attributes: DispatchQueue.Attributes = [],
autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency = .inherit,
target: DispatchQueue? = nil
)
Рассмотрим аргументы инициализатора:
ru.denisegaluev.queue для достижения уникальности. Так же идентификатор поможет определить очередь во время отладки..concurrent, определяющий очередь, как параллельную или .initiallyInactive, определяющий очередь неактивной, до тех пор, пока не будет вызван метод очереди activate().