Junior
Goroutinlar nima?
sobes.tech AI
AIdan javob
Go ishchi oqimlari, Go ijro muhiti tomonidan boshqariladi. Ular funksiyani chaqirishdan oldin go kalit so'zi bilan yaratiladi.
Asosiy xususiyatlar:
- Kamroq xotira sarfi: Goroutine kichik stek bilan boshlanadi (odatda 2 KB), u dinamik ravishda oshirilishi yoki kamaytirilishi mumkin.
- Yaratish tezligi: Goroutine yaratish tizim ipiga qaraganda ancha tezroq.
- Tizim iplariga multiplexing: Ko'p goroutinlar Go planlashtiruvchisi tomonidan kamroq tizim iplariga multiplex qilinishi mumkin.
- Hamkorlikda rejalashtirish: Goroutinlar oldindan to'xtatilmaydi; ular volontar ravishda rejalashtiruvchiga nazoratni topshiradi (masalan, bloklovchi chaqiruvlar yoki ochiq chaqiruvlar
runtime.Gosched()bilan).
Yaratish misoli:
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("Goroutindan salom!")
}
func main() {
go sayHello() // sayHello ni goroutine sifatida ishga tushurish
fmt.Println("Asosiy funksiyadan salom!")
time.Sleep(1 * time.Second) // Asosiy funksiyaning goroutine dan oldin tugamasligini ta'minlash uchun
}
Ip bilan taqqoslash:
| Xususiyat | Go Goroutinlari | Operatsion tizim iplari |
|---|---|---|
| Boshqarish | Go ijro muhiti | Operatsion tizim |
| Xotira sarfi | Past, dinamik stek | Yuqori, statik stek |
| Yaratish | Tez | Sekin |
| Rejalashtirish | Hamkorlikda | Oldindan to'xtatuvchi |
| Sinxronizatsiya | Kanallar, sync paketi | Mutexlar, semaforlar OS tomonidan |