Sobes.tech
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ú.