Middle
Ի՞նչ կլինի, եթե սկսեք ասինխրոն աշխատանքը հերթական հերթում:
sobes.tech AI
Պատասխան AI-ից
Գործառույթը կիրականացվի, բայց ոչ անմիջապես։ Այն կտեղադրվի հերթում և կկատարվի հերթականությամբ այս հերթում գտնվող մյուս գործառույթների հետ, երբ դրանք ավարտվեն։ Թեև գործառույթը ասինխրոն է, նրա կատարմանը սահմանափակում է մեկ թելային հերթի բնույթը։
// Օրինակ
let serialQueue = DispatchQueue(label: "com.example.serialqueue")
serialQueue.async {
// Այս գործառույթը կատարվում է ասինխրոն,
// բայց սպասում է նախորդ գործառույթների ավարտին
print("Գործառույթ 1 ավարտված")
}
serialQueue.async {
// Այս գործառույթը կատարվում է ասինխրոն,
// բայց սպասում է գործառույթ 1-ի ավարտին
print("Գործառույթ 2 ավարտված")
}
Հիմնական կետեր՝
- Հերթականություն։ Գործառույթները կատարվում են այն կարգով, որով ավելացվել են։
- Միայն մեկ թել։ Ամեն պահի, միայն մեկ գործառույթ է կատարվում այս հերթում։
- Չի բլոկում կանչող թելը։
asyncմեթոդի կանչը չի բլոկում այն թելը, որը կանչում է։ Գործառույթը դրվում է հերթում և վերահսկողությունը վերադառնում է։ - Ասինխրոնություն գործառույթի ներսում։ Եթե գործառույթը պարունակում է ասինխրոն օպերացիաներ (օրինակ, ցանցային հարցում), ապա այդ ներքին օպերացիաները կարող են կատարվել այլ թելերով, բայց հերթական գործառույթը չի անցնի հաջորդը մինչև սեփական գործառույթը չավարտվի (համաձայն հերթի տեսանկյունից):