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