Розбираємо шаблон
Producer–Consumer у Kotlin Coroutines: навіщо замість спільного
MutableList використовувати
Channel, як влаштовані ролі (
producer,
worker,
collector), як правильно закривати канали (
tasks і
results) за протоколом і правилом «власник закриття», чому порядок результатів не гарантований, як впливає
capacity і які помилки найчастіше призводять до зависань та падінь.