Sobes.tech
Junior — Middle

Mida juhtub süsteemi või programmi sees, kui bufer täitub täielikult, ja kuidas see võib põhjustada hangumist?

sobes.tech AI

Vastus AI-lt

Kui Go programmis täidetakse täielikult bufer, siis järgmine kirjutamine sellesse blokeeritakse kuni andmed on buferist loetud. See on seotud buferi suuruse piiranguga.

Kui andmete tootja (writer) jätkab kirjutamist täis buferisse ja tarbija (reader) ei loe andmeid, siis tootja goroutine blokeeritakse. Kui samal ajal ootab ka tarbija tootjat (näiteks vastastikuse lukustamise tõttu), tekib vastastikune lukustamine (deadlock), mis põhjustab programmi hangumise.

Näide: kanal, mille buferi suurus on 2, kuhu andmed kirjutatakse kiiremini kui neid loetakse.