Sobes.tech
Junior — Middle

Sistemdə müxtəlif növbələr arasında qarşılıqlı əlaqə və əlaqə necə həyata keçirilə bilər?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-da, müxtəlif növbələr (məsələn, əsas və fon növbələri) arasında qarşılıqlı əlaqə üçün GCD (Grand Central Dispatch) tez-tez istifadə olunur. Növbələr arasında əsas əlaqə üsulları:

  • Dispatch Qrupları — bir neçə asinxron tapşırığı birləşdirməyə və hamısı tamamlandıqda bildiriş almağa imkan verir. Bu, müxtəlif növbələrin işini sinxronlaşdırmaq üçün əlverişlidir.

  • Dispatch Semaforları — eyni zamanda icra olunan tapşırıqların sayını məhdudlaşdırmaq və axınları sinxronlaşdırmaq üçün istifadə olunur.

  • Dispatch Barriyerləri — rəqabətli növbədə bariyer yerləşdirməyə imkan verir, beləliklə, müəyyən kod blokunun icrasını təmin edir, digər tapşırıqlar eyni vaxtda icra olunmur.

  • Növbələr arasında məlumatların ötürülməsi — məsələn, arxa plan tapşırığını yerinə yetirdikdən sonra DispatchQueue.main.async çağırmaq UI-ni yeniləmək üçün istifadə edilə bilər.

Dispatch Group istifadə nümunəsi:

let group = DispatchGroup()

let queue1 = DispatchQueue(label: "com.example.queue1")
let queue2 = DispatchQueue(label: "com.example.queue2")

queue1.async(group: group) {
    // tapşırıq 1
    print("Tapşırıq 1 tamamlandı")
}

queue2.async(group: group) {
    // tapşırıq 2
    print("Tapşırıq 2 tamamlandı")
}

group.notify(queue: DispatchQueue.main) {
    print("Bütün tapşırıqlar tamamlandı")
}

Bu şəkildə, Dispatch Group bir neçə növbənin yerinə yetirilməsini əlaqələndirməyə və bütün tapşırıqlar tamamlandıqda bildiriş almağa kömək edir.