Middle+
Unter welchen Bedingungen wird das Lesen aus einem Kanal dauerhaft blockiert? Was passiert beim Schreiben in einen nil-Kanal? Beim Schreiben in einen geschlossenen Kanal?
sobes.tech KI
Antwort von AI
-
Das Lesen aus einem Kanal wird für immer blockiert, wenn der Kanal leer ist und niemand vorhat, darin zu schreiben (z.B. alle Sender sind geschlossen oder fehlen).
-
Das Schreiben in einen nil-Kanal (ein Kanal, der gleich nil ist) wird immer für immer blockiert, da der nil-Kanal nicht initialisiert ist und keine Daten empfangen kann.
-
Das Schreiben in einen geschlossenen Kanal führt in Go zu einem Panic, da dies verboten ist und als Laufzeitfehler gilt.
Beispiel:
var ch chan int // nil-Kanal
// <-ch // Lesen aus einem nil-Kanal wird für immer blockiert
// ch <- 1 // Schreiben in einen nil-Kanal wird für immer blockiert
ch = make(chan int)
close(ch)
// ch <- 2 // panic: Senden an einen geschlossenen Kanal