首页 > 解决方案 > 所有挂起函数都有一个作业吗?

问题描述

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

标签: kotlinkotlinx.coroutines

解决方案


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

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

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

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


推荐阅读