Junior — Middle
Cik maksimāli gorutīnu var vienlaikus palaist lietojumprogrammā?
sobes.tech AI
Atbilde no AI
Go valodā nav stingra ierobežojuma maksimālajam gorutīnu skaitam, kas var darboties vienlaikus. Teorētiski, to var būt ļoti daudz — desmiti, simti un dažreiz miljoni, atkarībā no sistēmas resursiem (atmiņas, CPU).
Gorutīnas ir ļoti vieglas salīdzinājumā ar operētājsistēmas pavedieniem, jo tās izmanto dinamisku steku, kas aug pēc vajadzības.
Tomēr praktiskais ierobežojums ir atkarīgs no:
- Pieejamās atmiņas apjoma (katra gorutīna aizņem vismaz dažus kilobaitus).
- Programmas loģikas un sinhronizācijas starp gorutīnām.
- Go plānotāja slodzes.
Piemērs, kā palaist daudz gorutīnu:
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()
// vienkāršs darbs
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Visas gorutīnas ir pabeigtas")
}
Tādēļ ierobežojums ir vairāk praktisks nekā sistēmisks.