5

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

到目前为止,我发现的文档来自 2013 年 10 月的重大变更 ( BREAKING CHANGE: dart:isolate )。这封“重大变更”电子邮件中的信息非常复杂,看起来新的 api 比旧的更复杂。

我有一些问题:

  • dart:isolate api 稳定吗?
  • 有最新的文档吗?
  • 有没有工作的例子?

感谢您的帮助,亨德里克·扬

4

1 回答 1

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();
  });
}

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

于 2014-01-07T12:46:51.930 回答