Sidekick channel
The Sidekick channel design pattern allows us to offload some work from our main worker to a back worker.
Up until now, we've only discussed the use of select
as a receiver. But we can also use select
to send items to another channel. Let's look at the following example.
First, we'll declare batman
as an actor coroutine that processes 10 messages per second:
val batman = actor<String> { for (c in channel) { println("Batman is beating some sense into $c") delay(100) } }
Next, we'll declare robin
as another actor coroutine that is a bit slower and processes only four messages per second:
val robin = actor<String> { for (c in channel) { println("Robin is beating some sense into $c") ...