Junior — Middle
Aké rozlišovacie znaky používania vyrovnávacích kanálov v programovaní poznáte?
sobes.tech AI
Odpoveď od AI
Vyrovnávacie kanály v Go majú nasledujúce rozlišujúce vlastnosti:
- Umožňujú odosielanie viacerých hodnôt do kanála bez okamžitého prijatia, kým nie je buffer plný.
- Odosielateľ sa blokuje iba vtedy, keď je buffer plný, a príjemca, keď je buffer prázdny.
- Zlepšujú výkon a umožňujú flexibilnejšiu synchronizáciu gorútín.
- Používajú sa na implementáciu frontov a bufferov medzi výrobcom a spotrebiteľom.
Príklad:
ch := make(chan int, 3) // buffer na 3 prvky
ch <- 1
ch <- 2
ch <- 3
// Odosielateľ sa nezablokuje, kým sa buffer nezaplní
fmt.Println(<-ch) // 1