从协程(kotlin)切换到隔离(dart)

Posted

技术标签:

【中文标题】从协程(kotlin)切换到隔离(dart)【英文标题】:Switching from coroutines(kotlin) to isolates(dart) 【发布时间】:2021-11-10 02:06:24 【问题描述】:

我用android和flutter制作的应用,

在 android 中处理复杂计算和网络的 Kotlin 协程

但是,我喜欢 dart-lang

所以我正在考虑从协程切换到隔离。

对此有什么顾虑吗?

【问题讨论】:

【参考方案1】:

据我所知,没有普遍的担忧。尽管在进行更改之前您需要考虑一些要点。

并发范式从多线程变为单线程。这意味着您不应该考虑将协程更改为隔离,因为您不会经常使用隔离或用于与协程相同的目的。 隔离用于“极端/独特”的情况,如果您想执行长时间运行的操作,通常不应该选择隔离,您应该使用简单的 async/await 来执行。 使用 async/await 更简单,因为您不必担心资源分配或竞争条件,但同时它允许您做“更脏”的事情,责任在您。 关于 Isolates 的最后想法:它们是一个单独的过程,因此隔离物之间的通信仅通过消息完成,因此基本数据应该在它们之间传递,如果您想返回一些大数据,这可能会让您有些头疼。 (当然,序列化一切皆有可能)

希望这可以帮助您选择,如果没有,请随时发表评论,我们可以进一步讨论。

【讨论】:

非常感谢@Sergio Pardo,为什么长时间运行的操作不应该选择隔离?是因为人为失误吗? @Taz 这主要是因为它是一个矫枉过正。为了推断将隔离用于长时间运行的任务对 android 意味着什么,它就像启动另一个应用程序来执行这样的任务,然后再给我一个答案。 Isolate 不仅是一个不同的线程,它还是一个具有不同资源分配的独立进程

以上是关于从协程(kotlin)切换到隔离(dart)的主要内容,如果未能解决你的问题,请参考以下文章

kotlin 协程withContext切换线程

Kotlin回顾9.协程思维模型

为啥 LiveData 没有从协程更新?

kotlin协程硬核解读(6. 协程调度器实现原理)

kotlin协程硬核解读(6. 协程调度器实现原理)

kotlin协程硬核解读(6. 协程调度器实现原理)