Sobes.tech
Middle

Ի՞նչ կլինի, եթե սկսեք ասինխրոն աշխատանքը հերթական հերթում:

sobes.tech AI

Պատասխան AI-ից

Գործառույթը կիրականացվի, բայց ոչ անմիջապես։ Այն կտեղադրվի հերթում և կկատարվի հերթականությամբ այս հերթում գտնվող մյուս գործառույթների հետ, երբ դրանք ավարտվեն։ Թեև գործառույթը ասինխրոն է, նրա կատարմանը սահմանափակում է մեկ թելային հերթի բնույթը։

// Օրինակ
let serialQueue = DispatchQueue(label: "com.example.serialqueue")

serialQueue.async {
    // Այս գործառույթը կատարվում է ասինխրոն,
    // բայց սպասում է նախորդ գործառույթների ավարտին
    print("Գործառույթ 1 ավարտված")
}

serialQueue.async {
    // Այս գործառույթը կատարվում է ասինխրոն,
    // բայց սպասում է գործառույթ 1-ի ավարտին
    print("Գործառույթ 2 ավարտված")
}

Հիմնական կետեր՝

  • Հերթականություն։ Գործառույթները կատարվում են այն կարգով, որով ավելացվել են։
  • Միայն մեկ թել։ Ամեն պահի, միայն մեկ գործառույթ է կատարվում այս հերթում։
  • Չի բլոկում կանչող թելը։ async մեթոդի կանչը չի բլոկում այն թելը, որը կանչում է։ Գործառույթը դրվում է հերթում և վերահսկողությունը վերադառնում է։
  • Ասինխրոնություն գործառույթի ներսում։ Եթե գործառույթը պարունակում է ասինխրոն օպերացիաներ (օրինակ, ցանցային հարցում), ապա այդ ներքին օպերացիաները կարող են կատարվել այլ թելերով, բայց հերթական գործառույթը չի անցնի հաջորդը մինչև սեփական գործառույթը չավարտվի (համաձայն հերթի տեսանկյունից):