Junior
რა არის გორუტინები?
sobes.tech AI
პასუხი AI-სგან
სუსტი შესრულების ნაკადი, რომელსაც მართავს Go-ის შესრულების გარემო. ისინი შექმნილია სიტყვა go-ს გამოყენებით ფუნქციის გამოძახებამდე.
ძირითადი მახასიათებლები:
- მცირე მეხსიერების მოხმარება: გორუტინა იწყება მცირე სტეკით (საშუალოდ 2 კბ), რომელიც შეიძლება დინამიურად გაიზარდოს ან შემცირდეს.
- სწრაფი შექმნა: გორუტინის შექმნა ბევრად უფრო სწრაფია, ვიდრე სისტემური ნაკადის შექმნა.
- მულტიპლექსირება სისტემურ ნაკადებზე: ბევრი გორუტინა შეიძლება მულტიპლექსირდეს ნაკლებ სისტემურ ნაკადზე Go-ის დაგეგმვის მიერ.
- კოოპერატიული დაგეგმვა: გორუტინები არ არიან პრეემპტივულად გაჩერებული; ისინი vrijwillულად გადმოსცემენ კონტროლს დაგეგმვაზე (მაგ., ბლოკირებადი ზარები ან გამარტივებული
runtime.Gosched()-ის ზარები).
შექმნის მაგალითი:
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("გამარჯობა გორუტინიდან!")
}
func main() {
go sayHello() // გამოძახება გორუტინად
fmt.Println("გამარჯობა მთავარი ფუნქციიდან!")
time.Sleep(1 * time.Second) // რათა მთავარი ფუნქცია არ დასრულდეს ადრე გორუტინაზე
}
შედარება ნაკადებთან:
| მახასიათებელი | Go გორუტინები | ოპერაციული სისტემის ნაკადები |
|---|---|---|
| მართვა | Go-ის შესრულების გარემო | ოპერაციული სისტემა |
| მეხსიერების მოხმარება | დაბალი, დინამიური სტეკი | მაღალი, ფიქსირებული სტეკი |
| შექმნა | სწრაფი | ნელი |
| დაგეგმვა | კოოპერატიული | პრეემპტიული |
| სინქრონიზაცია | არხები, sync პაკეტი | mutex-ები, სემაფორები OS-დან |