Sobes.tech
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