我可能对“隔离与未来”有错误的认识。请帮助我清除它。这是我对这两个主题的理解。
隔离:将运行代码隔离在其自己的事件循环中,并且每个事件都可以在嵌套的微任务队列中运行较小的任务。
期货:期货用于表示将来某个时候可用的潜在价值或错误。
我的困惑是:
医生说隔离有自己的循环吗?我觉得拥有自己的事件队列对我来说更有意义,我错了吗?
Future是否在主隔离上异步运行?我假设将来的任务实际上被放置在事件队列的末尾,所以如果将来它将通过循环执行。如我错了请纠正我。
为什么在将来有机会使用隔离?我看到一些使用Isolate代替Future进行繁重任务的示例。但为什么?仅当将来在主隔离队列上异步执行时,这对我才有意义。
A 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代码(从某些Dart文件或URL https://api.dartlang.org/stable/2.0.0/dart- isolate/Isolate/spawnUri.html加载)。
main()
隔离不会共享任何状态,只能使用消息传递(SendPort / ReceivePort)进行通信。每个隔离都有自己的事件队列。