Middle+
Ile procesów lub wątków może uruchomić jeden program?
sobes.tech AI
Odpowiedź od AI
W programie liczba jednoczesnych procesów i wątków nie jest ściśle ograniczona przez sam język czy system operacyjny, lecz zależy od zasobów systemowych (pamięci RAM, czasu procesora) oraz ograniczeń systemu operacyjnego.
W kontekście Go:
- Procesy to oddzielne instancje programu, zarządzane przez system operacyjny, zwykle uruchamiane przez wywołania systemowe.
- W Go wątki nie są tworzone bezpośrednio, zamiast nich używa się goroutines, które są lżejsze od wątków i zarządzane przez planistę Go.
Liczba goroutines może być bardzo duża (tysiące, a nawet miliony), ograniczona jedynie pamięcią i wydajnością.
Przykład tworzenia goroutines:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Pracownik %d rozpoczął\n", id)
time.Sleep(time.Second)
fmt.Printf("Pracownik %d zakończył\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // uruchamia 10 goroutines
}
time.Sleep(2 * time.Second) // czeka na zakończenie
}
W ten sposób, w programie Go, może działać wiele goroutines, a liczba procesów zależy od tego, ile instancji programu uruchomisz.