Senior
Gorutina nima? U qanday tuzilgan?
sobes.tech AI
AIdan javob
Go tilida goroutine — bu yengil ijro oqimi. Tizim ipliklaridan farqli o‘laroq, goroutine’lar Go runtime tomonidan boshqariladi va juda kichik stekga ega (bir necha kilobaytdan boshlanadi va dinamik ravishda o‘sishi mumkin). Bu yuz minglab goroutine’larni kam xarajat bilan bir vaqtning o‘zida ishga tushirish imkonini beradi.
Goroutine tuzilishi:
- Goroutine yaratishda (
gooperatori bilan), Go scheduler uni bajarishga tayyor vazifalar navbatiga qo‘yadi. - Go runtime M:N rejalashtirishni ishlatadi: M ta tizim ipi (OS iplari) N ta goroutine’ni boshqaradi.
- Goroutine’lar runtime darajasida kontekstni o‘zgartiradi, bu tizim iplarini o‘zgartirishdan tezroq.
- Har bir ip (M) bir nechta goroutine (N)ni bajarishi mumkin, ularni bloklash yoki ehtiyoj bo‘lsa, o‘tkazib yuboradi.
Goroutine yaratish misoli:
func sayHello() {
fmt.Println("Goroutine’dan salom")
}
func main() {
go sayHello() // goroutine ishga tushiriladi
time.Sleep(time.Second) // goroutine bajarilishini kutamiz
}