Erklären Sie das Konzept der Konkurrenz in der Programmiersprache Go und seine Rolle bei der Entwicklung paralleler Anwendungen
sobes.tech KI
Antwort von AI
In Go ist Konkurrenz (Concurrency) die Fähigkeit eines Programms, mehrere Aufgaben gleichzeitig auszuführen und dabei die Ressourcen des Prozessors effizient zu nutzen. In der Programmiersprache Go werden dafür Goroutines verwendet, das sind leichte Threads, die mit dem Schlüsselwort go gestartet werden.
Konkurrenz ermöglicht das Schreiben paralleler Anwendungen, bei denen verschiedene Teile des Codes gleichzeitig ausgeführt werden, was die Leistung und Reaktionsfähigkeit der Programme erhöht.
Zur Synchronisation und zum Austausch von Daten zwischen Goroutines werden Kanäle (Channels) verwendet, die eine sichere Kommunikation ohne explizite Sperren gewährleisten.
Beispiel:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Arbeiter %d startet\n", id)
time.Sleep(time.Second)
fmt.Printf("Arbeiter %d fertig\n", id)
}
func main() {
for i := 1; i <= 3; i++ {
go worker(i) // Goroutine starten
}
time.Sleep(2 * time.Second) // Warten auf Abschluss der Goroutines
}
In diesem Beispiel laufen drei Goroutines gleichzeitig, was die Konkurrenz in Go demonstriert.