kotlin - 所有挂起函数都有一个作业吗?
问题描述
在函数coroutineContext[Job]!!
内部使用安全吗?suspend
所有挂起函数都有一个作业吗?
解决方案
不,并非所有挂起功能都有工作。
coroutineContext
suspend
是通用的 Kotlin 机制,通过调用链透明地传递协程相关的对象,Job
是kotlinx.coroutines
具体的抽象。
如果您通过任何kotlinx.coroutines
支持的构建器启动了协程Job
(例如使用async
,launch
或produce
。您可以查看特定的构建器文档以检查它是否支持Job
),那么您Job
的coroutineContext
.
但是如果你以另一种方式启动协程,例如使用 stdlib buildSequence
,那么协程上下文将不包含作业。
推荐阅读
- python-3.x - 收集多个 Tkinter 检查按钮的输出
- javascript - 使用 moment.js 使用周数获取一周中的日期
- node.js - 使用 Mocha 进行 NodeJS EventEmitter 测试
- python-3.x - 在 Tensorflow 中,我不能在动态解码中使用任何 MultiRNNCell 实例,但可以使用单个 RNNCell 实例
- java - 在payara微战争文件中包含与POSTGRES的数据库连接的正确方法
- .net - .NET Core 2.1 - 如何创建 COM 对象并生成 *.tlb 文件
- ios - 更改符号名称和嵌入位码
- excel - Excel - 将值更改为另一个单元格的公式
- django - Django 2.1 查看权限
- apache-kafka - 如何使用 java 从 apache kafka 开始使用所有消息