Junior — Middle
Bir tətbiqdə eyni vaxtda işlədilə biləcək maksimum goroutine sayı nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində eyni zamanda işlədilə bilən goroutinların maksimum sayı üçün sərt məhdudiyyət yoxdur. Teorik olaraq, çox sayda — onlarca, yüzlərlə və bəzən milyonlarla — başlatmaq mümkündür, sistem resurslarından (yaddaş, CPU) asılıdır.
Goroutinlar, əməliyyat sistemi iplərinə nisbətən çox yüngüldür, çünki ehtiyac olduqda böyüyən dinamik yığını istifadə edir.
Ancaq, praktik məhdudiyyət aşağıdakılara bağlıdır:
- Mövcud yaddaş miqdarı (hər bir goroutin ən azı bir neçə kilobayt tutar).
- Tətbiqin loqikası və goroutinlar arasında sinxronizasiya.
- Go planlayıcısına yük.
Bir çox goroutin başlatma nümunəsi:
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()
// sadə iş
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Bütün goroutinlar tamamlandı")
}
Beləliklə, məhdudiyyət daha çox praktikdir, sistemə deyil.