Middle+
Колко процеса или нишки може да има една програма?
sobes.tech AI
Отговор от AI
В една програма броят на едновременно стартираните процеси и нишки не е строго ограничен от езика или операционната система, а зависи от системните ресурси (оперативна памет, процесорно време) и ограниченията на ОС.
В контекста на 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 може да се изпълняват много горутини, а броят на процесите зависи от това колко екземпляра на програмата ще стартирате.