深潜Kotlin协程(五):协程的内置支持 vs 协程库

系列电子书:传送门


在讨论协程时,通常将它们作为一个单独的概念。实际上,它是由两个部分构成的:Kotlin 语言的内置支持(编译器上的支持和 Kotlin 标准库中的元素),以及 Kotlin 协程库(名为 kotlinx.coroutines)。有时它们被视为同一实体,但实际上它们有很大的区别。

内置协程的语言被设计成极简的,并给予开发者尽可能多的自由。实际上,它可以用来写出任何其它编程语言中已知的并发风格,但是直接使用它并不方便,它的大多数元素,如 suspendCoroutineContinuation,应该是由库开发者而非应用程序开发者使用的。

另一方面,我们有 kotlinx.coroutines 库。这是一个需要添加到项目中的独立依赖,它基于有着内置协程支持的语言开发,而且更容易使用,并为开发人员提供一种具体的并发风格。

内置支持 kotlin.coroutines 库
编译支持,有 Kotlin 标准库中元素 需要手动添加依赖到项目中
元素在 kotlin.coroutines 包中 元素在 kotlinx.coroutines 包中
提供了一些最基本元素(比如 Continuation 或 suspendCoroutine)和 suspend 关键字 提供多种多样的元素(例如 launchasyncDeferred
较难直接使用 被设计成容易直接使用
可以使用几乎所有的并发风格 被设计成一种具体的并发风格

目前,内置的标准库和 kotlinx.coroutines 库总是一起使用,但这是没必要的。许多计算机科学论文都展示出了挂起概念的普适性。kotlin 协程库的开发者也展示了它。在寻找最佳并发风格时,他们使用内置的协程库来重现许多其它语言(如 Go 或 Goroutines)的并发风格。由 kotlinx.coroutines 库提供的并发风格更加优雅、方便,并与编程生态系统中的其它模式保持一致。但是,模式和编程风格会随着时间推移而改变,也许有一天我们社区会提出一个更好的并发风格。如果是这样的话,很可能有人会通过使用内置标准库的协程来实现它,并将其作为一个单独的库发布。这个有前途的库甚至可能取代 kotlinx.coroutines 库,天知道未来会发生什么?

到目前为止,本书主要集中在 Kotlin 的内置协程支持上,从现在开始,我们将专注于 kotlinx.coroutines 库。

猜你喜欢

转载自blog.csdn.net/rikkatheworld/article/details/125141062