Карточка Middle Потоки и синхронизация обновлено
Channel<T>
Вопрос
Что такое System.Threading.Channels.Channel<T> и зачем он нужен?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Асинхронная очередь «производитель-потребитель»: writer.WriteAsync, await foreach (var x in reader.ReadAllAsync()). Bounded-канал с ёмкостью даёт обратное давление: писатель ждёт, если очередь полна (BoundedChannelFullMode).
Ответ
Асинхронная очередь «производитель-потребитель»: writer.WriteAsync, await foreach (var x in reader.ReadAllAsync()).
Bounded-канал с ёмкостью даёт обратное давление: писатель ждёт, если очередь полна (BoundedChannelFullMode).
Типичное применение: очередь фоновых задач для BackgroundService.
Разбор
В отличие от BlockingCollection, канал не блокирует потоки, а асинхронно ожидает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.