Junior — Middle
Ilovada bir vaqtning o'zida nechta goroutine ishga tushirilishi mumkin?
sobes.tech AI
AIdan javob
Go tilida bir vaqtning o'zida ishga tushiriladigan goroutinlarning maksimal soniga qat'iy cheklov yo'q. Teorik jihatdan, juda ko'p — o'nlab, yuzlab va hatto millionlab — ishga tushirilishi mumkin, tizim resurslariga (xotira, CPU) bog'liq.
Goroutinlar operatsion tizim iplariga nisbatan juda yengil, chunki ular ehtiyoj bo'lsa, o'sadigan dinamik stekdan foydalanadi.
Ammo, amaliy cheklov quyidagilarga bog'liq:
- Mavjud xotira miqdori (har bir goroutin kamida bir necha kilobaytni egallaydi).
- Ilova logikasi va goroutinlar o'rtasidagi sinxronizatsiya.
- Go planlashtiruvchisiga yuk.
Ko'p sonli goroutinlarni ishga tushirish misoli:
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
const n = 100000
wg.Add(n)
for i := 0; i < n; i++ {
go func(i int) {
defer wg.Done()
// oddiy ish
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Barcha goroutinlar yakunlandi")
}
Shunday qilib, cheklov ko'proq amaliy, tizimli emas.