Sobes.tech
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 ба охир расид")
}

Бинобар ин, маҳдудият бештар амалӣ аст, на системӣ.