一尘不染

隔离与未来

flutter

我可能对“隔离与未来”有错误的认识。请帮助我清除它。这是我对这两个主题的理解。

隔离:运行代码隔离在其自己的事件循环中,并且每个事件都可以在嵌套的微任务队列中运行较小的任务。

期货:期货用于表示将来某个时候可用的潜在价值或错误。

我的困惑是:

  1. 医生说隔离有自己的循环吗?我觉得拥有自己的事件队列对我来说更有意义,我错了吗?

  2. Future是否在主隔离上异步运行?我假设将来的任务实际上被放置在事件队列的末尾,所以如果将来它将通过循环执行。如我错了请纠正我。

  3. 为什么在将来有机会使用隔离?我看到一些使用Isolate代替Future进行繁重任务的示例。但为什么?仅当将来在主隔离队列上异步执行时,这对我才有意义。


阅读 276

收藏
2020-08-13

共1个答案

一尘不染

A Future是允许您在异步执行完成时得到通知的句柄。异步执行使用事件队列,并且代码在同一线程中并发执行。

https://webdev.dartlang.org/articles/performance/event-
loop

默认情况下,Dart代码在根隔离目录中执行。

您可以启动通常在另一个线程上运行的其他隔离。隔离源可以从启动根隔离源的同一Dart代码加载(入口点与main()
https://api.dartlang.org/stable/2.0.0/dart-
isolate/Isolate/spawn.html不同))或使用其他Dart代码(从某些Dart文件或URL
https://api.dartlang.org/stable/2.0.0/dart-
isolate/Isolate/spawnUri.html加载)。

隔离不会共享任何状态,只能使用消息传递(SendPort / ReceivePort)进行通信。每个隔离都有自己的事件队列。

https://webdev.dartlang.org/articles/performance/event-
loop

2020-08-13