Sobes.tech
Junior — Middle

Ako spravovať veľkosť vyrovnávacej pamäte v kanáli?

sobes.tech AI

Odpoveď od AI

V Go je veľkosť vyrovnávacej pamäte kanála nastavená pri jeho vytváraní pomocou funkcie make. Ak zadáte druhý parameter, bude to veľkosť vyrovnávacej pamäte, teda počet prvkov, ktoré kanál môže uložiť bez blokovania odosielateľa.

Príklad vytvorenia bufferovaného kanála s veľkosťou bufferu 5:

ch := make(chan int, 5)

Ak je buffer plný, odoslanie do kanála sa zablokuje, kým niekto neprečíta z kanála. Ak je buffer 0 (alebo parameter nie je uvedený), kanál je bez bufferu a odoslanie sa zablokuje, kým nebude prijatá hodnota.

Týmto spôsobom sa správa veľkosti bufferu zjednodušuje na zadanie druhého parametra pri vytváraní kanála.