Sobes.tech
Junior — Middle

Jak lze spravovat velikost bufferu v kanálu?

sobes.tech AI

Odpověď od AI

V Go je velikost vyrovnávací paměti kanálu nastavena při jeho vytváření pomocí funkce make. Pokud zadáte druhý parametr, bude to velikost vyrovnávací paměti, tj. počet prvků, které kanál může uložit bez blokování odesílatele.

Příklad vytvoření bufferovaného kanálu s velikostí bufferu 5:

ch := make(chan int, 5)

Pokud je buffer plný, odeslání do kanálu se zablokuje, dokud někdo ne přečte z kanálu. Pokud je buffer 0 (nebo parametr není uveden), je kanál bez bufferu a odeslání se zablokuje, dokud nebude přijata hodnota.

Tímto způsobem se správa velikosti bufferu zjednodušuje na zadání druhého parametru při vytváření kanálu.