Middle
Swift-də çoxlu işdə hansı növ növbələr mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də çoxmərhələli işləmək üçün GCD (Grand Central Dispatch) və Operation Queues istifadə olunur. Bunlar aşağı səviyyəli iş parçacqları üzərində abstraksiyalar təqdim edir.
GCD daxilində aşağıdakı əsas növ növbələr mövcuddur:
-
Serial Növbələr (Serial Queues):
- Tapşırıqlar ardıcıllıqla, biri digərinin ardınca icra olunur.
- Tapşırıqların icra olunma ardıcıllığını təmin edir.
- Əsas (main) və ya xüsusi (custom) serial növbələr ola bilər.
-
Eyni vaxtlı Növbələr (Concurrent Queues):
- Tapşırıqlar eyni vaxtda icra oluna bilər.
- İcra ardıcıllığını təmin etmir.
- Əməliyyat sisteminin mövcud iş parçacqlarını istifadə edir.
- Qlobal (global) və ya xüsusi (custom) paralel növbələr ola bilər.
Operation Queues:
- GCD üzərində qurulmuşdur.
- Tapşırıqları (
Operation) idarə etmək üçün daha yüksək səviyyəli abstraksiyalar təqdim edir. maxConcurrentOperationCountxüsusiyyətinə görə ardıcıl və ya paralel işləyə bilər.- Əməliyyatlar arasında asılılıqları dəstəkləyir.
Nümunələr:
// Əsas ardıcıl növbə
let mainQueue = DispatchQueue.main
// Xüsusi ardıcıl növbə
let customSerialQueue = DispatchQueue(label: "com.example.myserialqueue")
// Yüksək prioritetli QoS ilə qlobal paralel növbə
let globalConcurrentQueue = DispatchQueue.global(qos: .userInitiated)
// Xüsusi paralel növbə
let customConcurrentQueue = DispatchQueue(label: "com.example.myconcurrentqueue", attributes: .concurrent)
// Əməliyyat növbəsi
let operationQueue = OperationQueue()
operationQueue.maxConcurrentOperationCount = 4 // Paralel tapşırıqların limiti
Serial və Parallel növbələr arasındakı müqayisə:
| Xüsusiyyət | Serial Queue | Parallel Queue |
|---|---|---|
| İcra ardıcıllığı | Sıralı | Paralel (garantilenmir) |
| Eyni vaxtda işləmə | Bir tapşırıq bir vaxtda | Bir neçə tapşırıq eyni vaxtda |
| Növlər | Əsas, Xüsusi | Qlobal, Xüsusi |