Карточка 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 ошибок.

Термины по теме