Junior — Middle
În ce condiții apare blocarea atunci când se utilizează un canal tamponat în sistemul de transmitere a datelor?
sobes.tech AI
Răspuns de la AI
În Go, un canal cu buffer se blochează în două cazuri principale:
-
La trimiterea (scrierea) în canal: dacă bufferul canalului este plin (adică, numărul de elemente din canal a atins capacitatea sa), încercarea de a trimite o nouă valoare blochează goroutine-ul până când cineva citește din canal și eliberează spațiu.
-
La citirea din canal: dacă canalul este gol (fără elemente de citit), încercarea de a citi din canal blochează goroutine-ul până când cineva trimite o nouă valoare.
Prin urmare, blocarea apare atunci când încerci să trimiți date într-un buffer plin sau să citești dintr-un buffer gol.