Котлин сопрограммы: одновременное выполнение дросселирования - PullRequest
0 голосов
/ 12 декабря 2018

Представьте, что мы читаем сообщения из очереди сообщений и при получении отправляем их для обработки в пул потоков.Количество потоков ограничено, поэтому, если все потоки заняты, у нас будет естественное противодавление.

Как это можно решить в мире сопрограмм Kotlin?Если мы создадим сопрограмму для каждого входящего сообщения, мы можем очень быстро получить ошибки «Недостаточно памяти» (например, если каждая задача требует загрузки данных из БД) и другие проблемы.

Существуют ли какие-либо механизмыили шаблоны для решения этой проблемы?

1 Ответ

0 голосов
/ 01 марта 2019

Один из способов решения этой проблемы - создать Channel и send ваши данные на нем.Другие потоки могут поставить consumeEach на канал, чтобы получать от него данные.Пропускная способность канала может быть изменена в соответствии с вашими потребностями.

Примеры разветвления и разветвления в документах сопрограмм также могут быть полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...