Sobes.tech
Junior — Middle

DispatchGroup түзүмү эмне экенин жана ал кантип бир нече асинхрон тапшырмаларды синхрондоштуруу үчүн колдонулушу мүмкүн экенин түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

DispatchGroup — бул iOS (GCD) механизм, ал көптөгөн асинхрондуу тапшырмаларды топтоштурууга жана алардын аяктоо процессин көзөмөлдөөгө мүмкүндүк берет. Ал иштөө процессин синхрондоштуруу үчүн жардам берет, мисалы, бардык тапшырмалар топтун ичинде аяктагандан кийин белгилүү бир кодду ишке ашыруу үчүн.

Иш принципи:

  • DispatchGroup түзүлөт.
  • Ар бир асинхрондуу тапшырма enter() аркылуу башталгандан кийин жана leave() аркылуу аяктагандан кийин топко кошулат.
  • Бардык тапшырмалар аяктагандан кийин кабар алуу үчүн notify(queue:) чакырылышы мүмкүн.

Мисал:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Асинхрон тапшырма 1
    print("Тапшырма 1 башталды")
    sleep(2)
    print("Тапшырма 1 аяктады")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Асинхрон тапшырма 2
    print("Тапшырма 2 башталды")
    sleep(1)
    print("Тапшырма 2 аяктады")
    group.leave()
}

group.notify(queue: .main) {
    print("Бардык тапшырмалар аяктады")
}

Мындайча, DispatchGroup бир нече параллелдүү операциянын аяктоосун күтүүгө жана андан соң кодду ишке ашырууга жардам берет.