首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoroutineContext和作业在kotlinx.coroutines中有什么区别?

CoroutineContext和作业在kotlinx.coroutines中有什么区别?
EN

Stack Overflow用户
提问于 2017-12-07 07:42:52
回答 1查看 2K关注 0票数 10

kotlinx.coroutines库中,所有协同构建器(如launchasync等)都接受CoroutineContext参数,但也有一个带有Job类型的附加parent参数。CoroutineContextJob有什么区别?

EN

回答 1

Stack Overflow用户

发布于 2017-12-07 07:42:52

Job表示正在执行的协同线或某种聚合任务。Job是一个CoroutineContext.Element,这意味着它可以存储在coroutine上下文中。CoroutineContext是一个不同的协同上下文元素的集合,而job只是这样一个元素。

实际上,coroutine上下文更像是一个映射,因为您可以使用coroutine元素键从其中检索元素。例如,如果您有一个类型为ctx的值CoroutineContext,那么您可以使用ctx[Job]表达式从它检索作业。更详细的信息可以在协同设计文件CoroutineContext文档的相应部分中找到。

启动新的协同线时,可以指定完整的上下文。如果此上下文包含作业,则相应的作业将成为新协同线的父任务。

协同构建器(如parent )的launch参数只是使父作业规范更加明确的一种方便。作为launch的文档,这里强调显式指定的父作业优先于上下文中指定的作业。指南的本节中给出了如何使用它的实际示例。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47689984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档