Sobes.tech
Junior — Middle

Mekkora maximális elemétszám helyezhető el egy csatornában?

sobes.tech MI

Válasz az MI-től

A Go-ban a csatornában lévő elemek maximális száma a puffertől függ. A csatorna lehet pufferelt vagy puffer nélküli.

  • Ha a csatorna puffer nélküli (a make(chan Type)-val létrehozva), akkor 0 elemet tartalmazhat — az küldés blokkolódik, amíg nem érkezik fogadás.
  • Ha a csatorna pufferelt (a make(chan Type, N)-nel létrehozva), akkor a maximális elem száma megegyezik a puffermérettel N.

Elméletileg a pufferméret a rendelkezésre álló memóriától és az int típusától függ (64 bites rendszereken ez egy nagyon nagy szám). A gyakorlatban azonban egy túl nagy buffer nem hatékony, és memóriafogyasztást okozhat.

Példa egy 100 elemű puffertartalmú csatorna létrehozására:

ch := make(chan int, 100)