我只是在学习Kotlin的协程,我很好奇线程何时将挂起suspend函数。在Golang中,我们知道它会在几种情况下挂起goroutine。调用另一个goroutine,block-syscall,channeling,gc。科特琳的协程是一样的吗?
答案 0 :(得分:0)
在Kotlin中,规则非常简单:协程永远不会自己暂停,您必须显式编写代码使其暂停。但是,在大多数使用情况下,此代码都包含在您调用的函数中。这是一个简单的示例:
val result = suspendCoroutine { continuation ->
makeAsyncCall(onComplete = { continuation.resume(it) })
}