Sobes.tech
Junior

Фарқи байни асинхронӣ ва бисёрсоҳавӣ чист?

sobes.tech AI

Ҷавоб аз AI

Асинхронлик — бу техник, асосий тўқимани тўхтатмасдан, фон режимда бирор операция амалга ошяётган пайтда, унинг якунланишини кутиб, ишни давом эттириш имконини беради.

Кўп иш парчалари — бу дастурнинг ишининг бир нечта қисмларини (иш парчалари) бир вақтнинг ўзида ёки псевдо-бир вақтда (бир ядроли процессорларда) бажариш қобилияти.

Асосий фарқ:

  • Кўп иш парчалари — бир нечта ишларни параллел бажариш усули, бир неча иш парчалари ёрдамида.
  • Асинхронлик — кутилган операциялар билан (масалан, I/O, тармоқ сўровлари) асосий тўқимани блокламасдан ишлаш усули.

Асинхронликни ҳам кўп иш парчалари билан (масалан, GCD ёки OperationQueue) ёки ундан мустақил равишда (масалан, воқеа цикллари ёки корутинлар орқали) амалга ошириш мумкин.

GCD ёрдамида бошқа иш парчасида асинхрон ишлаш мисоли:

// Код блокини фонов навбатга юбориш
DispatchQueue.global(qos: .background).async {
    // Бу ерда узоқ давом этувчи операция бажарилади
    let result = performBackgroundOperation() 

    // UI янгилаш учун асосий тўқимага қайтамиз
    DispatchQueue.main.async {
        updateUI(with: result)
    }
}

func performBackgroundOperation() -> String {
    // Узоқ ишни имитация қилиш
    sleep(2) 
    return "Операция якунланди"
}

func updateUI(with result: String) {
    // Интерфейс элементларини асосий тўқимада янгилаш
    print(result)
}