Junior — Middle
Čo sa deje vo vnútri systému alebo programu, keď sa vyrovnávacia pamäť úplne zaplní, a ako to môže viesť k zaseknutiu?
sobes.tech AI
Odpoveď od AI
Keď sa v programe na Go úplne zaplní buffer, ďalší zápis do neho je blokovaný, kým sa údaje neprečítajú. To je spôsobené obmedzenou veľkosťou bufferu.
Ak výrobca dát (writer) pokračuje v pokuse zapisovať do plného bufferu a čítačka (reader) dáta nečíta, gorutina výrobcu bude zablokovaná. Ak súčasne čítačka tiež čaká na výrobcu (napríklad kvôli vzájomnému zablokovaniu), vznikne situácia vzájomného zablokovania (deadlock), čo spôsobí zamrznutie programu.
Príklad: kanál s veľkosťou bufferu 2, do ktorého sa dáta zapisujú rýchlejšie, než sa čítajú.