Middle
Ի՞նչ տեսակների հերթեր կան Grand Central Dispatch (GCD)-ում։
sobes.tech AI
Պատասխան AI-ից
GCD- ում օգտագործվում են չորս հիմնական տեսակի հերթեր՝
-
Հիմնական հերթ (Main Queue):
- Սերիական հերթ:
- Օգտագործվում է ծրագրի գլխավոր հոսքում առաջադրանքներ կատարելու համար (UI-թարմացումներ, իրադարձությունների մշակում):
- միշտ մեկ է ծրագրի համար:
-
Գլոբալ մրցակցային հերթեր (Global Concurrent Queues):
- Մրցակցային հերթեր:
- Սպառվում են համակարգի կողմից:
- ունեն տարբեր որակյալ սպասարկման մակարդակներ (Quality of Service - QoS):
- կարող են միաժամանակ կատարել մի քանի առաջադրանք:
-
Հարմարեցված սերիական հերթեր (Custom Serial Queues):
- Հարմարեցված հերթեր, որոնք ստեղծում է ծրագրավորողը:
- իրականացնում են առաջադրանքները հերթով, մեկը մյուսի հետևից:
- իդեալական է ռեսուրսների մուտքի կառավարման համար (սինխրոնիզացիա):
-
Հարմարեցված մրցակցային հերթեր (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 |
Սիստեմը որոշում է առաջնահերթությունը: |