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

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

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

我的困惑是:

  • 医生说隔离有它自己的循环吗?我觉得拥有自己的事件队列对我来说更有意义,我错了吗?
  • 将来是否在主隔离上异步运行?我假设将来的任务实际上被放置在事件队列的末尾,所以如果将来它将通过循环执行。如果我错了纠正我。
  • 为什么在将来有机会使用隔离?我看到一些使用Isolate代替Future进行繁重任务的示例。但为什么?仅当将来在主隔离队列上异步执行时,这对我才有意义。
  • 最佳答案

    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文件或URL https://api.dartlang.org/stable/2.0.0/dart-isolate/Isolate/spawnUri.html URL加载不同的Dart代码加载隔离。

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

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

    关于dart - flutter 孤立与 future ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52498773/

    10-09 01:40