Sobes.tech
Senior

რა არის გორუტინა? როგორ არის მოწყობილი?

sobes.tech AI

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

Go ენის გორუტინა მსუბუქი შესრულების ნაკადი არის. სისტემის ნაკადებისგან განსხვავებით, გორუტინები მართავს Go-ის რანটাইმი და აქვთ ძალიან პატარა სტეკი (დაიწყება რამდენიმე კილობაიტიდან და შეიძლება დინამიურად გაიზარდოს). ეს საშუალებას აძლევს ერთდროულად გამოაცხადოთ ასობით ათასი გორუტინა დაბალი ხარჯებით.

გორუტინას მოწყობა:

  • გორუტინის შექმნისას (go ოპერატორით), Go-ის გეგმარებელი მას აყენებს მზადყოფნის რიგში.
  • Go-ის რანটাইმი იყენებს M:N გეგმარებას: M სისტემის ნაკადი (OS ნაკადები) მართავს N გორუტინას.
  • გორუტინები გადართავენ კონტექსტს რანটাইმის დონეზე, რაც უფრო სწრაფია, ვიდრე სისტემის ნაკადების გადართვა.
  • თითოეული ნაკადი (M) შეუძლია რამდენიმე გორუტინა (N) შეასრულოს, გადართვით მათ შორის ბლოკირებების ან საჭიროების შემთხვევაში.

გორუტინის შექმნის მაგალითი:

func sayHello() {
    fmt.Println("გამარჯობა გორუტინიდან")
}

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