Sobes.tech
Junior — Middle

Da li je moguća situacija u kojoj broj niti premašuje broj procesorskih jezgara?

sobes.tech АИ

Одговор од АИ

Da, takva situacija je moguća. U Go (Golang) jeziku, broj goroutine može znatno premašiti broj fizičkih jezgara procesora. Goroutine su lagane niti koje upravlja runtime Go-a, i njihov broj može biti hiljade ili čak milioni, dok je broj jezgara obično ograničen hardverom.

Runtime Go planira izvršavanje goroutine na dostupnim sistemskim nitima, koje se zauzvrat raspoređuju po jezgrima procesora. Dakle, broj goroutine nije ograničen brojem jezgara, već resursima sistema (memorijom i vremenom procesora). Ovo omogućava efikasno korišćenje multitaskinga i paralelizma.

Primer:

package main

import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Radnik %d je počeo\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Radnik %d je završio\n", id)
}

func main() {
    for i := 0; i < 1000; i++ {
        go worker(i) // Pokreće 1000 goroutine
    }
    time.Sleep(2 * time.Second) // Čeka da se završi
}

Ovde se kreira 1000 goroutine, što je mnogo više od broja jezgara, ali program funkcioniše ispravno.