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