Sobes.tech
Junior — Middle

Wie erfolgt die Datenübertragung über einen nicht gepufferten Kanal?

sobes.tech KI

Antwort von AI

In Go sorgt ein unpufferter Kanal (unbuffered channel) für eine synchrone Datenübertragung zwischen Goroutines. Das bedeutet, dass das Senden eines Wertes an den Kanal blockiert, bis eine andere Goroutine diesen Wert aus dem Kanal empfängt, und umgekehrt – der Empfang blockiert, bis ein Wert zum Lesen vorhanden ist.

Auf diese Weise erfolgt die Datenübertragung über einen unpufferten Kanal mit Synchronisation des Senders und Empfängers, was einen Datenaustausch ohne Zwischenspeicherung garantiert.

Beispiel:

ch := make(chan int) // unpufferter Kanal

go func() {
    ch <- 42 // das Senden blockiert, bis jemand liest
}()

value := <-ch // der Empfang blockiert die Ausführung, bis ein Wert erscheint
fmt.Println(value) // gibt 42 aus

In diesem Beispiel sendet die Goroutine eine Zahl in den Kanal und blockiert, bis die Haupt-Goroutine diese Zahl liest.