关于Dart Isolates的最新文档

Hen*_*Jan 5 web-worker dart dart-isolates

我最近开始使用Dart(www.dartlang.org)并且到目前为止非常喜欢它.一个非常有前途的功能是隔离,但我不知道如何开始.

到目前为止,我发现的文档是在2013年10月发生重大变化(突然变化:dart:isolate)之前.这个"Breaking changes"电子邮件中的信息非常复杂,看起来新api比旧版更复杂.

我有一些问题:

  • 飞镖:孤立api稳定吗?
  • 有没有最新的文件?
  • 有没有工作的例子?

感谢您的帮助,Hendrik Jan

Gün*_*uer 3

我尝试了这个例子,它有效https://gist.github.com/olostan/7883315

import "dart:isolate";

void main() {
  print("Starting");
  var sPort = new ReceivePort();
  SendPort rPort;
  sPort.listen((msg) {
    if (msg is SendPort) {
      print("Host got port. sending back");
      rPort = msg;
      rPort.send("Hello!");
    }
    else print("Host got $msg");
    rPort.send(null);
    sPort.close();
  });
  Isolate.spawn(test,sPort.sendPort);
}
void test(sender) {
  var rPort = new ReceivePort();
  sender.send(rPort.sendPort);
  rPort.listen((msg){
    print("Worker got $msg");
    if (msg!=null)
      sender.send("I am worker");
    else rPort.close();
  });
}
Run Code Online (Sandbox Code Playgroud)

隔离似乎还没有被太多使用,所以可能仍然存在一些错误。
我记得读过的最新问题是调试在隔离中运行的代码。我不知道这个问题是否已经解决了。
它还取决于您是否想在服务器上或浏览器中使用隔离。
AFAIK 在虚拟机中更稳定。

  • @hendrik - 请参阅更多示例 [is-there-any-example-for-darts-spawnuri-in-library-dartisolate](/sf/ask/1210965871/ -darts-spawnuri-in-library-dartisolate/25104337)。似乎“Isolate.spawnUri”的额外开销是 1)将代码放在单独的库中 2)处理“Future”,告诉您隔离是否正常生成,从那里开始一切都是相同的。 (2认同)