gpt4 book ai didi

kotlin - Kotlin 协程是彩色的吗?

转载 作者:行者123 更新时间:2023-12-05 01:27:17 27 4
gpt4 key购买 nike

有点出名article关于许多语言的异步编程模型的状态,指出它们存在“颜色”问题,特别是将生态系统分为两个独立的世界:异步和非异步。以下是这种语言的属性:

  • 每个函数都有一种颜色,红色或蓝色(例如async def)
  • 调用函数的方式取决于它的颜色(例如 await)
  • 您只能从另一个红色函数中调用红色函数SyntaxError: 'await' outside async function
  • 调用红色函数更痛苦(这个想法是,如果您决定将函数设为红色,那么使用您的 API 的每个人都想吐到您的咖啡里和/或存放一些更不美味的东西里面有液体)
  • 一些核心库函数是红色的,所以你无法避免红色函数

Kotlin 是一种非常新的语言,所以我认为我应该研究一下它的异步模型。但是,Kotlin 会转译为 JavaScript,所以我相信它有颜色问题,而不是我认为没有。但是它的协程对我来说有点难以理解并且很困惑,所以我在这里问哪些属性适用于 Kotlin? (以及它解决了多少颜色问题)

最佳答案

  • 每个函数都有一种颜色,红色或蓝色(例如 async def)

是的。

  • 调用函数的方式取决于它的颜色(例如等待)

是的。

  • 您只能从另一个红色函数中调用红色函数

是的。

  • 一些核心库函数是红色的

是的,但他们是来帮助您处理红色功能业务的。您永远不会被迫使用它们来获得一些基本功能。

  • 调用红色函数更痛苦

也是如此,但是有很多支持可以让痛苦变得很低。您可以在任何地方使用 runBlocking { } 来“进入红色世界”,并且您可以通过编写 suspend fun main() 将入口点本身着色为红色。 Kotlin 的另一个不错的选择,在许多其他语言中没有看到,是类似 await 的行为内置于函数本身,您不必编写 myFunction().await( )

在实践中,Kotlin 协程最痛苦的方面是它们无法从底层 API 中移除阻塞。例如,很容易滑入使用阻塞的 Java 文件 IO,并卡住使用同一线程的所有其他协程的进度。编译器也很难确定您何时执行此操作,因此您很难找到它。

关于kotlin - Kotlin 协程是彩色的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69461974/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com