Sobes.tech
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)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:

  1. 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.
  2. 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.
  • maxConcurrentOperationCount xü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