Junior — Middle
Milyen feltételek mellett fordul elő blokkolás adatátviteli rendszerben bufferelt csatorna használata esetén?
sobes.tech MI
Válasz az MI-től
Go-ban egy pufferelt csatorna két fő esetben blokkolódik:
-
A csatornába írás (küldés) során: ha a csatorna puffere tele van (azaz a csatornában lévő elemek száma eléri a kapacitását), az új érték küldése blokkolja a goroutine-t, amíg valaki nem olvas a csatornából és nem szabadít fel helyet.
-
A csatornából olvasáskor: ha a csatorna üres (nincs olvasandó elem), az olvasási kísérlet blokkolja a goroutine-t, amíg valaki nem küld új értéket.
Így a blokkolás akkor fordul elő, amikor telepufferbe próbálsz adatot küldeni vagy üres pufferből olvasni.