@ IR42 сказал правильно, вы должны использовать для этой цели каналы.
Используйте Channel и создайте одну сопрограмму, которая приостановлена и ожидает, пока отправитель канала отправит журналы (строки или
Использование канала по умолчанию RendezvousChannel , Когда отправитель отправляет журнал, ожидающая сопрограмма возобновляется, и если другой отправитель отправляет сообщение, то этот следующий отправитель приостанавливается, пока ожидающая сопрограмма не потянет журнал с канала.
Пример, демонстрирующий использование RendezvousChannel
val channel = Channel<String>() // Channel of Strings
val sendChannel: SendChannel<String> = channel // Hide that this instance can receive, store this in order to send to this channel
scope.launch(Dispatchers.IO) {
while (!channel.isClosedForReceive) {
val log = channel.receive()
// process the log
}
}
// Somewhere else
sendChannel.send("Test Log")