Sobes.tech
Junior — Middle

რა ხდის გოროუტინებს უფრო ეფექტურს ტრადიციული ძაფების შედარებით?

sobes.tech AI

პასუხი AI-სგან

Go-ში goroutine-ები უფრო ეფექტურია ტრადიციული ნაკადებთან (threads) შედარებით, რამდენიმე ძირითადი მახასიათებლის გამო:

  • სუსტი წონა: Goroutine-ები ძალიან ცოტას იკავებენ მეხსიერებაში (საშუალოდ დაახლოებით 2 კბ სტეკი), მაშინ როდესაც სისტემის ნაკადები ბევრად მეტ მეხსიერებას მოითხოვენ.
  • ენის დონეზე დაგეგმვა: Go-ს აქვს საკუთარი goroutine დაგეგმვა, რომელიც ეფექტურად განაწილებს მათ შესრულებას სისტემის ნაკადებზე, რაც საშუალებას აძლევს ათასობით goroutine-ი ერთდროულად მუშაობდეს, დიდი ხარჯების გარეშე.
  • სწრაფი შექმნა და კონტექსტის გადართვა: Goroutine-ების შექმნა და მათ შორის გადართვა ბევრად სწრაფია, ვიდრე ოპერაციული სისტემის ნაკადებს შორის, რაც ამცირებს მრავალტასკინგის ხარჯებს.

Goroutine-ის შექმნის მაგალითი:

func sayHello() {
    fmt.Println("Goroutine-დან გამარჯობა")
}

func main() {
    go sayHello() // goroutine-ის დაწყება
    time.Sleep(time.Second) // ველით, რომ goroutine შესრულდება
}