Middle+
Kolik procesů nebo vláken může mít jeden program?
sobes.tech AI
Odpověď od AI
V jednom programu není počet současně spuštěných procesů a vláken přísně omezen jazykem nebo operačním systémem, ale závisí na systémových zdrojích (operační paměti, procesorovém čase) a omezeních OS.
V kontextu Go:
- Procesy jsou samostatné instance programu, spravované operačním systémem, obvykle spuštěné pomocí systémových volání.
- Vlákna v Go nejsou přímo vytvářena, místo nich se používají gorutiny, které jsou lehčí než vlákna a jsou spravovány plánovačem Go.
Počet gorutin může být velmi velký (tisíce nebo i miliony), omezen pouze pamětí a výkonem.
Příklad tvorby gorutin:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Dělník %d začal\n", id)
time.Sleep(time.Second)
fmt.Printf("Dělník %d skončil\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // spouští 10 gorutin
}
time.Sleep(2 * time.Second) // čeká na dokončení
}
Tímto způsobem může být v programu v Go spuštěno mnoho gorutin, a počet procesů závisí na tom, kolik instancí programu spustíte.