【问题标题】:How Kotlin coroutines will use Project Loom? [closed]Kotlin 协程将如何使用 Project Loom? [关闭]
【发布时间】:2020-10-13 05:23:10
【问题描述】:

目前,Kotlin 协程是在没有 JVM 帮助的情况下实现的。它不使用绿色(虚拟)线程之类的东西。你可以在这里阅读协程的实现 - https://github.com/Kotlin/KEEP/blob/master/proposals/coroutines.md#implementation-details

在不久的将来(比如,1-2 年),Loom 项目(在 JVM 中实现绿色线程)将会发布。您可以在此处阅读有关它的详细信息 - http://cr.openjdk.java.net/~rpressler/loom/loom/sol1_part1.html

那么,Kotlin 会使用这些虚拟线程作为编译后端吗?或者有一些原因,为什么不可能?我谈到了需要版本的 JVM 目标(很明显,我们需要自己的 android 实现)。

其实还有一个更笼统的问题。当 Project Loom 发布时,我们真的需要 Kotlin 协程吗?

【问题讨论】:

  • 如果您想了解更多信息,可以在 kotlin 论坛上阅读很多内容:Search loom on Kotlin forum。有很多方面需要考虑,性能只是其中之一。另一个是 API 是多么容易理解/使用。另一个是关于控制的。您(作为开发人员/语言用户)是否可以完全控制异步模型?在稳定的 loom 版本发布之前,许多问题很难回答。
  • 协程不仅仅是轻量级线程,它们不仅用于多线程。协程实现可以用来代替深度递归,因为将堆栈存储在堆中,挂起等待(在特定时间)因为协程本身什么都不是,而是使用线程来执行,但它们本身不是线程。并且灵活,实现结构化并发,它提供取消和更多...如果项目 Loom 有更好的优化线程支持,coroutines-library 可以使用它们来调度协程。

标签: java kotlin jvm kotlin-coroutines green-threads


【解决方案1】:

作为 Roman Elizarov outlined in his talk,将与 Project Loom 进行互操作

对于协程的需求,你必须意识到 Kotlin 是一种多平台语言,这意味着协程必须在所有平台上工作,包括浏览器和原生代码。

即使他们将在 JVM 上使用 Project Loom,API 也必须保持一致,因为相同的代码将编译到所有平台。

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2020-02-01
    • 2020-10-19
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2022-11-09
    • 2020-06-07
    • 1970-01-01
    相关资源
    最近更新 更多