kotlin协程val vs fun

kotlin coroutine val vs fun

我是协程和 Kotlin 的新手。 为什么我得到不同的结果,下面的案例 1 和案例 2?

fun main(args: Array<String>) = runBlocking {
    fun a() = async(CommonPool) {
        println("start A")
        delay(1000)
        println("finish A")
    }

    fun b() = async(CommonPool) {
        println("start B")
        delay(1000)
        println("finish B")
    }

    //case 1
    a().await()
    b().await()

    //case 2
    val A = a()
    val B = b()
    A.await()
    B.await()
}

这个 val 风格编码是基本的吗?

案例1等同于

val A = a()
await(A)
val B = b()
await(B)

也就是你启动A,等待它(这里协程挂起),然后你才启动B,因此AB被执行依次,而不是同时。

case 2 你同时启动了 AB 然后协程才挂起等待 AB.