Sobes.tech
Junior — Middle

Goroutine-ში კოდის შესრულება და სისტემის ხერხის მუშაობა ოპერაციული სისტემის დონეზე რა განსხვავებაა?

sobes.tech AI

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

Go-ში gorutinalar — ეს მსუბუქი ნაკადებია, რომლებიც მართავს Go-ის რანტაიმი, არა ოპერაციული სისტემა. ძირითადი განსხვავებები:

  • მსუბუქი: Gorutinal-ები ძალიან ცოტა მეხსიერებას იკავებენ (საშუალოდ რამდენიმე კილობაიტი სტეკი), მაშინ როდესაც სისტემის ნაკადები ბევრად მეტ რესურსს მოითხოვენ.
  • გეგმვა: Gorutinal-ების გეგმარება ინტეგრირებულია Go-ის რანტაიმში და ნაწილებს აყოფს gorutinal-ებს სისტემის ნაკადებს შორის, რაც ეფექტიანად იყენებს CPU-ს.
  • შექმნა და გადართვა: Gorutinal-ების შექმნა და გადართვა უფრო სწრაფია, ვიდრე სისტემის ნაკადებს შორის, რადგან არ საჭიროებს ядრის კონტექსტის შეცვლას.

მაგალითი:

func main() {
    go func() {
        fmt.Println("Gorutina")
    }()
    fmt.Println("ძირითადი ნაკადი")
    time.Sleep(time.Second) // ველით gorutina-ს დასრულებას
}

აქ, gorutina იწყება პროცესის შიგნით, მაგრამ პირდაპირ არ შეესაბამება ცალკეულ სისტემის ნაკადს.