Sobes.tech
Junior — Middle

Wie erfolgt die Verteilung von vier Goroutines auf die vier Prozessorkerne beim Start?

sobes.tech KI

Antwort von AI

In Go verteilt der Goroutine-Planer (Goroutine scheduler) die Goroutines auf die System-Threads (M), die wiederum an die CPU-Kerne gebunden sind.

Wenn Sie 4 Goroutines und 4 CPU-Kerne haben, kann der Planer beim Start jede Goroutine auf einen separaten Kern verteilen, was parallele Ausführung ermöglicht. Dies ist möglich, wenn die Umgebungsvariable GOMAXPROCS auf 4 gesetzt ist (standardmäßig ist sie in modernen Go-Versionen gleich der Anzahl der verfügbaren Kerne).

Beispiel:

runtime.GOMAXPROCS(4) // legt die Anzahl der verfügbaren Threads auf 4 fest

for i := 0; i < 4; i++ {
    go func(id int) {
        fmt.Printf("Goroutine %d gestartet\n", id)
        // Arbeit
    }(i)
}

Der Go-Planer wird die Goroutines auf die Threads verteilen, die auf verschiedenen Kernen ausgeführt werden können, was eine effiziente Nutzung multiprozesssorischer Systeme ermöglicht. Die genaue Verteilung hängt jedoch von der Systemauslastung und dem internen Scheduler ab.