在coroutineContext[Job]!!
函数中使用suspend
是否安全?所有暂停功能都有作业吗?
答案 0 :(得分:1)
不,并非所有暂停功能都有工作。
coroutineContext
是通用的Kotlin机制,通过suspend
调用链透明地传递与coroutines相关的对象,Job
是kotlinx.coroutines
特定的抽象。
如果您通过支持kotlinx.coroutines
的任何Job
构建器启动了协程(例如使用async
,launch
或produce
。您可以查看具体情况构建器文档以检查它是否支持Job
),然后Job
中有coroutineContext
。
但如果您以其他方式启动协程,例如使用stdlib buildSequence
,然后协程上下文将不包含作业。