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érettelN.
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)