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.