Kun*_*nte 6 suspend kotlin kotlinx.coroutines
执行之间有什么不同吗?
launch {
function1()
}
fun function1(){
DoSomething...
}
Run Code Online (Sandbox Code Playgroud)
和
launch {
function2()
}
suspend fun function2(){
DoSomething...
}
Run Code Online (Sandbox Code Playgroud)
就在这里.
在语义上,对暂停函数的调用可以暂停执行,该执行可以在稍后(或从不)某个时间点恢复,可能在不同的上下文(例如,另一个线程)中.
为了确保这一点,编译器以特殊方式处理对挂起函数的调用:它生成将当前局部变量保存到Continuation实例中并将其传递给挂起函数的代码,并且在调用后字节码中也有一个恢复点,执行将跳转到,加载局部变量并运行(带尾调用的角点).
对非挂起函数的调用被编译为更简单的字节码,与正常调用挂起函数体外的函数相同.
你可以在这里找到有关Kotlin协程设计和实现的详细信息:Corotines for Kotlin
您还可以检查生成的编译字节码以查看差异:Kotlin Bytecode - 如何在IntelliJ IDEA中进行分析?
| 归档时间: |
|
| 查看次数: |
847 次 |
| 最近记录: |