我有几个关于隔离工作原理的问题:
1)call
和send
之间有什么区别?我应该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
时,它什么都没打印,为什么?
答案 0 :(得分:1)
使用call()
上的SendPort
方法作为发送消息和接收回复的简单方法。 call()
方法为回复返回Future
。如果您不想回复并只是想发送消息,请使用send()
。
有关更多信息,请查看dart:isolate - Concurrency with Isolates。
对于3)它在上面的链接中解释:
在独立VM中,
main()
函数在第一个隔离区(也称为根隔离区)中运行。当根隔离终止时,它会终止整个VM,无论其他隔离是否仍在运行。有关详细信息,请参阅the section called “Keeping the root isolate alive”。