Sobes.tech
Middle

Ի՞նչ տեսակների հերթեր կան Grand Central Dispatch (GCD)-ում։

sobes.tech AI

Պատասխան AI-ից

GCD- ում օգտագործվում են չորս հիմնական տեսակի հերթեր՝

  1. Հիմնական հերթ (Main Queue):

    • Սերիական հերթ:
    • Օգտագործվում է ծրագրի գլխավոր հոսքում առաջադրանքներ կատարելու համար (UI-թարմացումներ, իրադարձությունների մշակում):
    • միշտ մեկ է ծրագրի համար:
  2. Գլոբալ մրցակցային հերթեր (Global Concurrent Queues):

    • Մրցակցային հերթեր:
    • Սպառվում են համակարգի կողմից:
    • ունեն տարբեր որակյալ սպասարկման մակարդակներ (Quality of Service - QoS):
    • կարող են միաժամանակ կատարել մի քանի առաջադրանք:
  3. Հարմարեցված սերիական հերթեր (Custom Serial Queues):

    • Հարմարեցված հերթեր, որոնք ստեղծում է ծրագրավորողը:
    • իրականացնում են առաջադրանքները հերթով, մեկը մյուսի հետևից:
    • իդեալական է ռեսուրսների մուտքի կառավարման համար (սինխրոնիզացիա):
  4. Հարմարեցված մրցակցային հերթեր (Custom Concurrent Queues):

    • Մրցակցային հերթեր, որոնք ստեղծում է ծրագրավորողը:
    • կարող են միաժամանակ կատարել մի քանի առաջադրանք:
    • թույլ է տալիս ավելի լավ վերահսկել առաջադրանքների կատարմանը՝ համեմատած գլոբալ մրցակցային հերթերի:

Օրինակներ հերթեր ստեղծելու համար:

// Հիմնական հերթ
let mainQueue = DispatchQueue.main

// Մեկը գլոբալ մրցակցային հերթերից (բարձր առաջնահերթությամբ)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// Հարմարեցված սերիական հերթ
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// Հարմարեցված մրցակցային հերթ
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

QoS առաջնահերթությունները գլոբալ հերթերի համար՝

QoS առաջնահերթություն Նկարագրություն
.userInteractive Առաջադրանքներ, որոնք կապված են օգտագործողի ինտերֆեյսի հետ (պատասխան սեղմումներին):
.userInitiated Օգտագործողի նախաձեռնած առաջադրանքներ (միայն բովանդակության բեռնում ըստ խնդրանքի):
.default Դեմարկատված առաջնահերթություն, .userInitiated և .utility միջև:
.utility Երկար տևողությամբ ֆոնային առաջադրանքներ (ֆայլերի ներբեռնում):
.background Նվազ առաջնահերթության առաջադրանքներ, որոնք չեն կախված օգտագործողից:
.unspecified Սիստեմը որոշում է առաջնահերթությունը: