Middle+
Koliko procesa ili niti može imati jedna program?
sobes.tech АИ
Одговор од АИ
У једном програму број процеса и тока који се истовремено извршавају није строго ограничен језиком или оперативним системом, већ зависи од ресурса система (RAM, процесорно време) и ограничења ОС.
У контексту Go:
- Процеси су одвојене инстанце програма, управљају их ОС, обично се покрећу преко системских позива.
- У Go-у, токови се не креирају директно, уместо тога се користе горутинес, који су лакши од токова и управља их планер Go.
Број горутинас може бити веома велики (хиљаде или чак милиони), ограничен само меморијом и перформансама.
Пример креирања горутинас:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Радник %d почео\n", id)
time.Sleep(time.Second)
fmt.Printf("Радник %d завршио\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // покреће 10 горутин
}
time.Sleep(2 * time.Second) // чека завршетак
}
На овај начин, у Go програму може бити покренуто много горутин, а број процеса зависи од тога колико инстанци програма покрећете.