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)
}