所有挂起函数都有作业吗?
Do all suspend functions have a Job?
在 suspend
函数中使用 coroutineContext[Job]!!
安全吗?所有挂起函数都有作业吗?
不,并非所有挂起函数都有工作。
coroutineContext
是通过 suspend
调用链透明传递协程相关对象的通用 Kotlin 机制,Job
是 kotlinx.coroutines
特定抽象。
如果您通过任何支持 Job
的 kotlinx.coroutines
构建器启动了协程(例如使用 async
、launch
或 produce
。您可以检查特定的构建器文档以检查它是否支持 Job
),然后你的 coroutineContext
.
中有 Job
但是如果你以其他方式启动协程,例如使用 stdlib buildSequence
,则协程上下文将不包含作业。
在 suspend
函数中使用 coroutineContext[Job]!!
安全吗?所有挂起函数都有作业吗?
不,并非所有挂起函数都有工作。
coroutineContext
是通过 suspend
调用链透明传递协程相关对象的通用 Kotlin 机制,Job
是 kotlinx.coroutines
特定抽象。
如果您通过任何支持 Job
的 kotlinx.coroutines
构建器启动了协程(例如使用 async
、launch
或 produce
。您可以检查特定的构建器文档以检查它是否支持 Job
),然后你的 coroutineContext
.
Job
但是如果你以其他方式启动协程,例如使用 stdlib buildSequence
,则协程上下文将不包含作业。