Junior — Middle
Беҳтарин миқдори goroutine-ҳо, ки метавонанд дар як барнома ҳамзамон оғоз шаванд, чӣ қадар аст?
sobes.tech AI
Ҷавоб аз AI
Дар Go ҳеҷ гуна маҳдудияти қатъӣ дар шумораи максималии goroutines, ки метавонанд ҳамзамон иҷро шаванд, вуҷуд надорад. Теоретикӣ, онҳо метавонанд хеле зиёд бошанд — даҳҳо, садҳо ва ҳатто миллионҳо, вобаста ба захираҳои система (хотира, CPU).
Goroutines нисбат ба сӯрохиҳои системаи оператсионӣ хеле сабуканд, зеро онҳо стеки динамикӣ истифода мебаранд, ки мувофиқи эҳтиёҷ меафзояд.
Аммо маҳдудияти амалӣ ба:
- Миқдори дастрасии хотира (ҳар goroutine ҳадди аққал чанд килобайт мегирад).
- Логикаи барнома ва ҳамоҳангсозии байни goroutines.
- Бор дар планировщики Go.
Масалан, оғози як теъдоди зиёди goroutines:
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()
// кори содда
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Ҳама goroutines ба охир расид")
}
Бинобар ин, маҳдудият бештар амалӣ аст, на системӣ.