Junior — Middle
Co se děje uvnitř systému nebo programu, když je buffer zcela zaplněn, a jak to může vést k zaseknutí?
sobes.tech AI
Odpověď od AI
Když se v programu v Go úplně zaplní buffer, další zápis do něj je blokován, dokud nejsou data přečtena. To je způsobeno omezenou velikostí bufferu.
Pokud výrobce dat (writer) pokračuje v pokusu zapisovat do plného bufferu a čtečka (reader) data nečte, gorutina výrobce bude zablokována. Pokud zároveň čtečka také čeká na výrobce (například kvůli vzájemnému zablokování), vznikne situace vzájemného zablokování (deadlock), což způsobí zamrznutí programu.
Příklad: kanál s velikostí bufferu 2, do kterého jsou data zapisována rychleji, než jsou čtena.