BroadcastChannel<Int>(1)
private fun bind(scope: CoroutineScope) = scope.launch {
channel.openSubscription()
.consumeEach { println(it) }
}
1. Нет suspend, следовательно пользователь нашей функции сразу видит, что долгой работы никакой не будет.
2. Мы явно передали скоуп, показывая, что нашу функцию не стоит вызывать в цикле, так как каждый созданный скоуп… А можно поподробнее про OutOfMemoryError? Потому что каждый созданный скоуп - это дороже по памяти, чем просто вызванная suspend-функция?
Разумеется дороже. Это не тред, конечно, но тоже сильно не бесплатно.
Обсуждают сегодня