ExpertiDict

C# · Avançado · Inglês · Técnico

Channel

/ˈtʃænəl/substantivo

Fila assíncrona e thread-safe de System.Threading.Channels para o padrão produtor-consumidor. Um lado escreve itens, o outro lê com await, com suporte a limite de capacidade.

Onde usar

Aparece em pipelines de processamento e serviços em segundo plano que recebem trabalho de várias fontes. Um canal limitado aplica backpressure: o produtor espera quando a fila enche, evitando consumir toda a memória.

Em código

using System.Threading.Channels;

var ch = Channel.CreateBounded<int>(10);
await ch.Writer.WriteAsync(1);
ch.Writer.Complete();
var r = ch.Reader;
await foreach (var n in r.ReadAllAsync())
  Console.WriteLine(n);

Exemplos

The producer writes to a bounded Channel.

O produtor escreve em um Channel limitado.

Complete the channel so the reader can finish.

Complete o canal para o leitor poder terminar.

Cuidado

Não esqueça de chamar Writer.Complete(): o consumidor que lê com ReadAllAsync nunca termina.

Sinônimos

fila assíncrona

Veja também

Todos os termos de C#