从协程(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)的主要内容,如果未能解决你的问题,请参考以下文章