Channel<T> — thread-safe producer/consumer queue.
Creation:
1var channel = Channel.CreateBounded<int>(new BoundedChannelOptions(100)2{3 SingleReader = false,4 SingleWriter = true,5 FullMode = BoundedChannelFullMode.Wait6});
Producer:
1await channel.Writer.WriteAsync(item);2channel.Writer.Complete(); // Signal no more items
Consumer:
1await foreach (var item in channel.Reader.ReadAllAsync())2{3 await ProcessAsync(item);4}
vs BlockingCollection:
Use cases: