Middle+
Quanti processi o thread può avviare un singolo programma?
sobes.tech AI
Risposta dell'AI
In un programma, il numero di processi e thread eseguiti contemporaneamente non è strettamente limitato dal linguaggio o dal sistema operativo stesso, ma dipende dalle risorse del sistema (memoria RAM, tempo di CPU) e dalle restrizioni del sistema operativo.
Nel contesto di Go:
- I processi sono istanze separate di un programma, gestite dal sistema operativo, solitamente avviate tramite chiamate di sistema.
- I thread in Go non vengono creati direttamente, al loro posto si usano le goroutine, che sono più leggere dei thread e sono gestite dal pianificatore di Go.
Il numero di goroutine può essere molto grande (migliaia o anche milioni), limitato solo dalla memoria e dalla performance.
Esempio di creazione di goroutine:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Lavoratore %d avviato\n", id)
time.Sleep(time.Second)
fmt.Printf("Lavoratore %d terminato\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // avvia 10 goroutine
}
time.Sleep(2 * time.Second) // aspetta la fine
}
In questo modo, in un programma Go possono essere eseguite molte goroutine, e il numero di processi dipende da quante istanze del programma avvierai.