Middle+
Milyen feltételek mellett blokkolódik örökre a csatornából való olvasás? Mi történik, ha írunk egy nil-csatornába? Egy lezárt csatornába való íráskor?
sobes.tech MI
Válasz az MI-től
-
A csatornából való olvasás örökre blokkolódik, ha a csatorna üres, és senki sem szándékozik írni bele (például, minden küldő zárva van vagy hiányzik).
-
A nil-csatornába való írás (egy nil-vel egyenlő csatorna) mindig örökre blokkolódik, mivel a nil-csatorna nincs inicializálva, és nem fogad adatokat.
-
A zárt csatornába való írás Go-ban pánikot (panic) okoz, mivel ez tilos, és futásidejű hiba.
Példa:
var ch chan int // nil-csatorna
// <-ch // a nil-csatornából való olvasás örökre blokkolódik
// ch <- 1 // a nil-csatornába való írás örökre blokkolódik
ch = make(chan int)
close(ch)
// ch <- 2 // panic: küldés zárt csatornára