корутина не выполнялась, пока не выполнится предыдущая (ограничить параллелизм). Пробую через акторы, но как-то не правильно, видать, я их готовлю
https://pl.kotl.in/_jluindCI
Сейчас выводит
First launch before main @coroutine#2
First launch inside DefaultDispatcher-worker-1 @coroutine#4
Second launch before main @coroutine#3
Second launch inside DefaultDispatcher-worker-1 @coroutine#4
First, received 1 main @coroutine#2
Second, received 2 main @coroutine#3
Желаемый результат
First launch before main @coroutine#2
First launch inside DefaultDispatcher-worker-1 @coroutine#4
Second launch before main @coroutine#3
First, received 1 main @coroutine#2
Second launch inside DefaultDispatcher-worker-1 @coroutine#4
Second, received 2 main @coroutine#3
каналы с ограниченым буффером
Можно сделать launch с lazy стартом и стартовать при получении следующего элемента. Или можно запустить на однопоточном диспетчере. Но самоле лучшее - вообще не делать launch, а просто хранить суспенд функции и вызывать их в цикле. Они будут гарантировано последовательны
Обсуждают сегодня