Sobes.tech
Middle

Кадом намудҳои навбатҳо дар бисёркорӣ дар Swift вуҷуд доранд?

sobes.tech AI

Ҷавоб аз AI

У Swift для работы с многопоточностью выкарыстоўваюцца GCD (Grand Central Dispatch) і Operation Queues. Яны прадастаўляюць абстракцыі над нізка ўзроўню патокамі.

У рамках GCD існуюць наступныя асноўныя тыпы чарг:

  1. Serial Queues (Серыяльныя чаргі):

    • Задачы выконваюцца па парадку, адна за другой.
    • Гарантуюць, што задачы будуць выконвацца ў тым парадку, у якім яны былі пастаўлены.
    • Могуць быць галоўнай (main) або ўласнай (custom) серыйнай чаргой.
  2. Concurrent Queues (Паралельныя чаргі):

    • Задачы могуць выконвацца адначасова.
    • Не гарантуе парадак выканання задач.
    • Выкарыстоўваюць даступныя патокі аперацыйнай сістэмы.
    • Могуць быць глабальнымі (global) або ўласнымі (custom) паралельнымі чаргамі.

Operation Queues:

  • Ствараюцца на аснове GCD.
  • Уяўляюць сабой больш высокаўзроўневую абстракцыю для кіравання задачамі (Operation).
  • Могуць працаваць як паслядоўна, так і паралельна, у залежнасці ад уласцівасці maxConcurrentOperationCount.
  • Падтрымліваюць залежнасці паміж аперацыямі.

Прыклад стварэння чарг:

// Галоўная паслядоўная чарга
let mainQueue = DispatchQueue.main

// Ўласная паслядоўная чарга
let customSerialQueue = DispatchQueue(label: "com.example.myserialqueue")

// Глабальная паралельная чарга з высокім прыярытэтам QoS
let globalConcurrentQueue = DispatchQueue.global(qos: .userInitiated)

// Ўласная паралельная чарга
let customConcurrentQueue = DispatchQueue(label: "com.example.myconcurrentqueue", attributes: .concurrent)

// Operation Queue
let operationQueue = OperationQueue()
operationQueue.maxConcurrentOperationCount = 4 // Усталёўвае ліміт паралельных задач

Табліца, якая параўноўвае Serial і Concurrent Queues:

Уласцівасць Serial Queue Concurrent Queue
Парадак выканання Строга па парадку Паралельна (не гарантуецца)
Адначасовасць Адна задача за раз Некалькі задач адначасова
Тыпы Галоўная, Ўласная Глабальная, Ўласная