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 |
სისტემა განსაზღვრავს პრიორიტეტს. |