コルーチンに Channel があります。Queueのようなもので、メッセージの受け渡しができます。 とっても便利なんですが、今までと違うパラダイムなのでハマる可能性があります。 例: fun main(args: Array<String>) = runBlocking<Unit> { val channel = Channel<Int>() // <- receiveされていないメッセージが何個でもOK launch(CommonPool) { // this might be heavy CPU-consuming computation or async logic, we'll just send five squares for (x in 1..5) channel.send(x * x) } // here we print five received integers: