Неграниченный канал в C#
Канал без верхней границы не заставляет писателя ждать свободное место. Очередь может расти, пока хватает памяти, если читатель не успевает забирать элементы.
Такой канал удобен для событий внутри процесса, когда читатель обычно успевает за производителем.
Запишем число 1 и сразу прочитаем его. Для одного уже лежащего элемента канал закрывать не нужно:
using System.Threading.Channels;
Channel<int> ch = Channel.CreateUnbounded<int>();
await ch.Writer.WriteAsync(1);
Console.WriteLine(await ch.Reader.ReadAsync()); // выведет 1
Создайте канал без лимита длины. Запишите в него строку "ping" и сразу выведите её в консоль.