Middle+
Hoeveel processen of threads kan één programma uitvoeren?
sobes.tech AI
Antwoord van AI
In een programma is het aantal gelijktijdig uitgevoerde processen en threads niet strikt beperkt door de taal of het besturingssysteem, maar hangt af van de systeembronnen (RAM, CPU-tijd) en de beperkingen van het besturingssysteem.
In de context van Go:
- Processen zijn aparte instanties van een programma, beheerd door het besturingssysteem, meestal gestart via systeemoproepen.
- In Go worden threads niet direct gemaakt, in plaats daarvan worden goroutines gebruikt, die lichter zijn dan threads en worden beheerd door de Go-planner.
Het aantal goroutines kan zeer groot zijn (duizenden of zelfs miljoenen), alleen beperkt door het geheugen en de prestaties.
Voorbeeld van het maken van goroutines:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Werker %d gestart\n", id)
time.Sleep(time.Second)
fmt.Printf("Werker %d klaar\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // start 10 goroutines
}
time.Sleep(2 * time.Second) // wacht tot ze klaar zijn
}
Op deze manier kunnen in een Go-programma veel goroutines worden uitgevoerd, en het aantal processen hangt af van hoeveel exemplaren van het programma je start.