Dart隔离呼叫或发送

时间:2013-07-24 13:32:03

标签: dart

我有几个关于隔离工作原理的问题:

1)callsend之间有什么区别?我应该call使用send

2)只是好奇,有没有办法像我们链Future那样链隔离?

3)

import 'dart:isolate';
echo() {
  port.receive((msg, reply) {
    print('I received: $msg');
  });
}

main() {
  var sendPort = spawnFunction(echo);
  sendPort.call('Hello from main');
}

显示:我收到了:主要的你好

但是当我使用send时,它什么都没打印,为什么?

1 个答案:

答案 0 :(得分:1)

使用call()上的SendPort方法作为发送消息和接收回复的简单方法。 call()方法为回复返回Future。如果您不想回复并只是想发送消息,请使用send()

有关更多信息,请查看dart:isolate - Concurrency with Isolates

对于3)它在上面的链接中解释:

  

在独立VM中,main()函数在第一个隔离区(也称为根隔离区)中运行。当根隔离终止时,它会终止整个VM,无论其他隔离是否仍在运行。有关详细信息,请参阅the section called “Keeping the root isolate alive”