den*_*631 5 asynchronous coroutine async-await kotlin
协程只是完成块周围的语法糖,完成块将在幕后创建吗?或者是协程的概念比编译器技巧又名语法糖更复杂和广泛
它不仅仅是语法糖,一点也不。协程不会阻塞线程,它们只是暂停执行,因此它们鼓励非阻塞并发编程。
\n\n协程不依赖于操作系统或 JVM 的功能(例如,它们不映射到本机线程)。相反,协程和suspend函数特别由编译器进行转换,生成一个状态机,该状态机能够处理一般的挂起并传递挂起的协程以保持其状态。这是通过Continuations启用的,编译器将其作为参数添加到每个挂起函数中;这种技术称为\xe2\x80\x9cContinuation-passing style\xe2\x80\x9d。
有关详细信息,请查看https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md
\n