ExpertiDict

Go · Essencial · Inglês · Técnico

buffered channel

/ˈbʌf.ɚd ˈtʃæn.əl/substantivo

Channel criado com capacidade maior que zero. O envio só bloqueia quando o buffer está cheio, e o recebimento só bloqueia quando ele está vazio.

Onde usar

Útil para absorver picos entre produtor e consumidor sem sincronizar cada item. A capacidade é uma decisão de design, não um remédio para deadlock.

Em código

ch := make(chan string, 2)
ch <- "a"
ch <- "b" // não bloqueia
fmt.Println(len(ch), cap(ch)) // 2 2

Exemplos

A buffered channel of size 100 smooths out the spikes.

Um channel com buffer de 100 suaviza os picos.

The send doesn't block because the buffer still has room.

O envio não bloqueia porque o buffer ainda tem espaço.

Cuidado

Aumentar o buffer para fazer um deadlock sumir só esconde o problema de sincronização.

Sinônimos

channel com buffer

Antônimos

unbuffered channel

Veja também

Todos os termos de Go