Grand Central Dispatch

GCD фреймворк, содержит в себе инструменты который позволяет нам комфортно управлять потоками, задачами для выполнения и ресурсами

Queue Queue - Является основным примитивом GCD. Queue это сущность который выполняет задачу, поступающий на него на одном или через нескольких потоков

Представьте себе кассу, В данном случае касса которое нас обслуживает - это поток вы - сама задача, а все вместе - очередь (Queue)

Очередь работает по принципу FIFO, таким образом первая задача на очереди будет первой направлена на выполнение на потоке

Screenshot 2023-08-27 at 13.41.32.png

Очереди делятся на 2 типа:

Serial очередь обрабатывает задачи в каком порядке они были поступлены, по очередно

Сoncurrent очередь не гарантирует, что задачи будут выполнены в строгом порядке очереди.

Screenshot 2023-08-27 at 13.40.13.png

Для того, чтобы создать очередь, нам необходимо создать объект типа DispatchQueue. Взглянем на декларацию инициализатора данного типа:

convenience init(
label: String, 
qos: DispatchQoS = .unspecified, 
attributes: DispatchQueue.Attributes = [], 
autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency = .inherit, 
target: DispatchQueue? = nil
)

Рассмотрим аргументы инициализатора: