3

在函数coroutineContext[Job]!!内部使用安全吗?suspend所有挂起函数都有一个作业吗?

4

1 回答 1

1

不,并非所有挂起功能都有工作。

coroutineContextsuspend是通用的 Kotlin 机制,通过调用链透明地传递协程相关的对象,Jobkotlinx.coroutines具体的抽象。

如果您通过任何kotlinx.coroutines支持的构建器启动了协程Job(例如使用asynclaunchproduce。您可以查看特定的构建器文档以检查它是否支持Job),那么您JobcoroutineContext.

但是如果你以另一种方式启动协程,例如使用 stdlib buildSequence,那么协程上下文将不包含作业。

于 2018-05-07T10:24:40.680 回答