Sobes.tech
Intern

Ի՞նչ է տարբերությունը Greetings 1 և Greetings 3-ի միջև։

sobes.tech AI

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

Հիմնական տարբերությունը վերաբերում է հերթերի աշխատանքի մեթոդին:

Greetings 1 (սինխրոնային):

  • Օգտագործում է սինխրոնային հերթեր (DispatchQueue):
  • Երբ աշխատանքը կատարվում է սինխրոնային հերթում, ընթացիկ հոսքը բլոկվում է մինչև այդ աշխատանքը ավարտվի:

Greetings 3 (ասինխրոնային):

  • Օգտագործում է ասինխրոնային հերթեր (DispatchQueue):
  • Երբ աշխատանքը կատարվում է ասինխրոնային հերթում, ընթացիկ հոսքը չի բլոկվում և կարող է շարունակել աշխատանքը: Աշխատանքը կատարվում է այլ հոսքում, որը պատկանում է հոսքերի պուլին:

Ահա հիմնական տարբերությունները աղյուսակում:

Գծագրություն Greetings 1 (Սինխրոնային) Greetings 3 (Ասինխրոնային)
Հերթի տեսակ Սինխրոն (DispatchQueue) Ասինխրոն (DispatchQueue)
Հոսքի աշխատանք Հոսքը բլոկվում է Հոսքը չի բլոկվում
Կատարման հոսքեր Աշխատանքը կատարվում է նույն հոսքում Աշխատանքը կատարվում է ֆոնային հոսքում
Կիրառում Պարզ հերթական գործողություններ Գործողություններ, որոնք պետք է չբլոկեն UI- ին

Նմուշային կոդ (ակնհայտ, ցույց է տալիս կոնցեպտը):

// Greetings 1
let syncQueue = DispatchQueue(label: "com.example.sync")
syncQueue.sync {
    // Ուժեղ աշխատանք
    print("Greetings 1: Ուժեղ աշխատանքը ավարտվեց") // Այս տպագիր արտահայտությունը տեղի կունենա ավարտից հետո
}
print("Greetings 1: Հոսքը կշարունակվի sync-ից հետո") // Այս տպագիր արտահայտությունը տեղի կունենա աշխատանքից հետո

// Greetings 3
let asyncQueue = DispatchQueue(label: "com.example.async")
asyncQueue.async {
    // Ուժեղ աշխատանք
    print("Greetings 3: Ուժեղ աշխատանքը ավարտվեց") // Այս տպագիր արտահայտությունը կարող է տեղի ունենալ ուշ
}
print("Greetings 3: Հոսքը կշարունակվի անմիջապես async-ից հետո") // Այս տպագիր արտահայտությունը տեղի կունենա անմիջապես

Ընտրությունը սինխրոն և ասինխրոն կատարումի միջև կախված է նրանից, արդյոք անհրաժեշտ է բլոկավորել ընթացիկ հոսքը կամ թույլ տալ, որ այն շարունակվի, մինչդեռ ֆոնային աշխատանքը կատարվում է: iOS ծրագրավորման մեջ հաճախ օգտագործվում է ասինխրոն կատարում՝ երկարատև գործողությունների (օրինակ, ցանցային հարցումներ, տվյալների մշակում) համար, որպեսզի չբլոկվի հիմնական հոսքը և չխանգարի օգտվողի ինտերֆեյսին։