Sobes.tech
Junior

Proqramlaşdırma kontekstində növbə nədir və necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

FIFO (First-In, First-Out) prinsipini həyata keçirən məlumat strukturu olan növbə, elementlər növbənin sonuna əlavə edilir (enqueue) və onun başlanğıcından çıxarılır (dequeue).

iOS və Swift kontekstində, növbələr tez-tez aşağıdakı məqsədlər üçün istifadə olunur:

  1. Asinxron tapşırıqların icrası:

    • OperationQueue: Operation obyektləri üçün idarəetmə strukturu. Tapşırıqları əlavə etməyə, onların asılılıqlarını, prioritetlərini və eyni vaxtda icra olunan əməliyyatların sayını nəzarət etməyə imkan verir.
    • DispatchQueue: Grand Central Dispatch (GCD) ilə işləmək üçün obyekt yönümlü üsul təqdim edir. Kod bloklarını asinxron və ya sinxron şəkildə müxtəlif ipdə icra etmək üçün istifadə olunur.

    Məsələn, şəbəkə sorğusunu fon rejimində icra etmək və UI-ni əsas ipdə yeniləmək üçün:

    // Tapşırığı fon ipdə icra etmək
    DispatchQueue.global(qos: .userInitiated).async {
        // Uzunmüddətli əməliyyat, məsələn, məlumatların yüklənməsi
        let data = fetchData()
    
        // UI-ni əsas ipdə yeniləmək
        DispatchQueue.main.async {
            updateUI(with: data)
        }
    }
    
  2. Hadisələrin və mesajların idarə olunması:

    • iOS-də əsas növbə (main queue) UI hadisələrini, toxunuşları və ekran yeniləmələrini idarə edir.
    • Xüsusi dispatch növbələri daxil olan məlumatların, serverdən gələn mesajların və ya digər hadisələrin ardıcıl və ya paralel işlənməsi üçün istifadə edilə bilər.
  3. Resursların idarə olunması:

    • Paylaşılan resurslara girişin məhdudlaşdırılması və ya əlaqəli əməliyyatların ardıcıllığının təmin edilməsi üçün növbələrdən istifadə edilə bilər.
  4. Producer-Consumer nümunəsinin həyata keçirilməsi:

    • Bir proqram hissəsi elementləri növbəyə əlavə edir (producer), digər hissəsi isə onları çıxarır və işləyir (consumer).

GCD müxtəlif növ növbələr təklif edir:

  • Serial (ardıcıl): Tapşırıqları bir-birinin ardınca icra edir. Resurslara girişin sinxronizasiyası üçün istifadə olunur.
  • Paralel (konkurrent): Tapşırıqları paralel icra edir, lakin onların tamamlanma ardıcıllığı təmin edilmir.
  • Main queue (əsas növbə): Əsas ip ilə əlaqəli serial növbə. Yalnız UI ilə işləmək üçün istifadə olunur.

Ümumiyyətlə, iOS-də növbələr kodun asinxron icrasını təşkil etmək, ipləri idarə etmək və tapşırıqları ardıcıllıqla yerinə yetirmək üçün istifadə olunur ki, bu da cavabdeh və yüksək performanslı tətbiqlər yaratmaq üçün vacibdir.