Sobes.tech
Junior — Middle

Ինչպես է գործում բլոկավորումը՝ երբ կանչում եք sync մեթոդը հերթական հերթում?

sobes.tech AI

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

Երբ կանչում եք sync մեթոդը GCD (Grand Central Dispatch)-ում սերիական հերթում, ընթացիկ հոսքը բլոկվում է մինչև sync-ին փոխանցված առաջադրանքի ավարտը։ Եթե sync-ը կանչվի նույն հոսքից, որը սպասարկում է այդ հերթը, առաջանում է deadlock, քանի որ հերթը չի կարող սկսել նոր առաջադրանք, մինչև ընթացիկը չավարտվի, իսկ ընթացիկ հոսքը սպասում է նոր առաջադրանքի ավարտին։

Օրինակ՝

let serialQueue = DispatchQueue(label: "com.մասնակի.serial")

serialQueue.sync {
    print("Աշխատանքի կատարում")
}
// Ընթացիկ հոսքը բլոկվում է մինչև առաջադրանքի ավարտը

Կարևոր է, որ sync-ը չկանչեք նույն սերիական հերթից ներս, որպեսզի խուսափեք փոխադարձ բլոկավորումներից։