kotlin - 线程何时会挂起暂停功能?

标签 kotlin kotlin-coroutines suspend

我只是在学习Kotlin的协程,我很好奇线程何时会挂起suspend函数。在Golang中,我们知道它会在几种情况下挂起goroutine。调用另一个goroutine,block-syscall,channeling,gc。 Kotlin的协程是一样的吗?

最佳答案

在Kotlin中,规则非常简单:协程永远不会自行挂起,您必须显式编写代码使其挂起。但是,在大多数使用情况下,此代码都包含在您调用的函数中。这是一个简单的例子:

val result = suspendCoroutine { continuation ->
    makeAsyncCall(onComplete = { continuation.resume(it) })
}

关于kotlin - 线程何时会挂起暂停功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58911378/

相关文章:

android - Kotlin Android Jetpack 在后台 fragment 之间导航

java - 如何知道 Android 手机是否启用了流量节省功能

kotlin - 在 lambda 内调用 withContext(Dispatchers.Main) 时获取 "Suspension functions can be called only within coroutine body"

android - 如何运行协程作为单元测试的阻塞?

linux - 自动暂停进程

kotlin - 如何在 kotlin 中创建这个协程?

android - 将数据从作为生命周期观察器的类传递给Activity

multithreading - 为什么使用协程阻塞线程时会执行代码?

iphone - 如何避免iOS应用程序在后台过渡时暂停?

.net - 系统事件和从 sleep 状态恢复