Sobes.tech
Middle

iOS-də çox nüvəli proqramlaşdırmada qlobal növbə haqqında danışın.

sobes.tech Süni İntellekt

AI-dan cavab

Grand Central Dispatch (GCD) içindəki Global Queue (Qlobal Növbə), bütün tətbiqlər üçün əlçatan olan əvvəlcədən təyin olunmuş sistem növbələridir. Bunlar eyni vaxtda işləyən növbələrdir, yəni içindəki tapşırıqlar müxtəlif iş parçacqlarında paralel şəkildə icra oluna bilər.

Əsas xüsusiyyətlər:

  • Növlər: Xidmətin keyfiyyət səviyyəsindən (QoS - Quality of Service) asılı olaraq fərqlənir.
  • QoS: Tapşırıqların icra prioritetini müəyyən edir və sistemin hansı tapşırıqları daha sürətli tamamlaması lazım olduğunu təsir edir.
  • Paralellik: Birdən çox tapşırığın eyni vaxtda icrasına imkan verir.
  • Sistem: Əməliyyat sistemi tərəfindən yaradılır və idarə olunur.

Qlobal növlər (prioritet sırasına görə azalan):

QoS Səviyyəsi Təsviri
userInteractive İstifadəçi interfeysinə birbaşa təsir edən tapşırıqlar (animasiyalar, hadisələr).
userInitiated İstifadəçi tərəfindən başlanmış, lakin UI-ni bloklamayan tapşırıqlar (məzmun yükləmə).
default Aydın QoS göstəricisi olmayan standart səviyyə.
utility İcra üçün vaxt tələb edən, lakin dərhal UI-ni təsir etməyən tapşırıqlar (böyük faylların yüklənməsi).
background Arxa planda icra olunan, istifadəçidən gizli tapşırıqlar (məlumatların sinxronizasiyası).
unspecified Nadir istifadə olunur, QoS vacib deyil. default ilə eynidir.

Qlobal növbələrə giriş:

// Müəyyən QoS səviyyəsinə malik qlobal növbəyə giriş
let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)

// Standart qlobal növbəyə giriş
let defaultQueue = DispatchQueue.global()

Tapşırıqları yerinə yetirmək üçün qlobal növbələrin istifadəsi:

// Arxa planda asinxron tapşırıq icrası
DispatchQueue.global(qos: .background).async {
    // Uzun müddət çəkən kod, UI-ni bloklamadan
}

// Daha az yayılmış, sinxron tapşırıq icrası
DispatchQueue.global(qos: .userInitiated).sync {
    // Cari iş parçacığının davam etməsindən əvvəl tamamlanmalı olan kod
}

Vacib qeyd:

  • UI-ya birbaşa təsir edən tapşırıqları qlobal növbələrdə icra etməyin (çox sürətli əməliyyatlar üçün userInteractive istisna olmaqla). UI yeniləmələri üçün əsas növbəni (DispatchQueue.main) istifadə edin.
  • Qlobal növbələr paralel icra üçün nəzərdə tutulub. Tapşırıqların icra sırası təmin edilmir.
  • sync istifadə edildikdə, cari iş parçacığı tapşırıq tamamlanana qədər bloklanacaq. Bu, əsas iş parçacığından çağırıldıqda UI-nin donmasına səbəb ola bilər.