64.11 Coroutine Channel Communication
Channels provide a simple way to implement communication between coroutines including streams of data. In the simplest form this involves the creation of a Channel instance and calling the send() method to send the data. Once sent, transmitted data can be received in another coroutine via a call to the receive() method of the same Channel instance.
The following code, for example, passes six integers from one coroutine to another:
import kotlinx.coroutines.channels.*
.
.
val channel = Channel<Int>()
suspend fun channelDemo() {
coroutineScope.launch(Dispatchers.Main) { performTask1() }
coroutineScope.launch(Dispatchers.Main) { performTask2() }
}
suspend fun performTask1() {
(1..6).forEach {
channel.send(it)
}
}
suspend fun performTask2() {
...