Sobes.tech
Junior — Middle

Yaratilayotgan gorutinlar soni protsessordagi yadro soni bilan bog'liqmi?

sobes.tech AI

AIdan javob

Go'da yaratiladigan goroutinlar soni protsessor yadrolari soniga to'g'ridan-to'g'ri bog'liq emas. Juda ko'p goroutinlar yaratish mumkin — ular Go ish vaqti tomonidan boshqariladigan yengil oqimlar bo'lib, ularning soni asosan mavjud xotira va dastur mantiqiga bog'liq.

Yadro soni, bir vaqtning o'zida bajarilishi mumkin bo'lgan operatsion tizim iplarining soniga va GOMAXPROCS parametri, ya'ni parallel ravishda bajariladigan goroutinlar maksimal soniga ta'sir qiladi. Ammo, odatda, goroutinlar soni yadro sonidan ancha ortiq bo'ladi, chunki ular samarali rejalashtiriladi va ish vaqti ichida o'zgaradi.

Misol:

runtime.GOMAXPROCS(4) // 4 yadrodan foydalanamiz

for i := 0; i < 1000; i++ {
    go func(n int) {
        fmt.Println("Goroutine", n)
    }(i)
}
time.Sleep(time.Second)

Bu yerda 1000 goroutinlar yaratiladi, holbuki faqat 4 yadro mavjud.