Junior — Middle
Millistel tingimustel tekib tõkestus andmeedastussüsteemis kasutades pufferkanalit?
sobes.tech AI
Vastus AI-lt
Go-s buffersed kanal blokeerub kahes peamises olukorras:
-
Kanalile kirjutamisel (saates): kui kanali buffer on täis (st. kanali elementide arv on jõudnud selle mahutavuseni), siis uue väärtuse saatmise katse blokeerib goroutine'i, kuni keegi ei loe kanali seest ja vabastab ruumi.
-
Kanalist lugedes: kui kanal on tühi (pole elemente lugemiseks), siis kanali lugemise katse blokeerib goroutine'i, kuni keegi saadab uue väärtuse.
Seega tekib blokeering, kui püüate saata andmeid täis bufferisse või lugeda tühjast bufferist.