编辑以使问题更清楚。
我正在尝试在 Dart 中使用 Isolates(或 Web Workers)。我能找到在主线程和隔离线程之间进行通信的唯一方法是send and 打电话然后从主线程。但这是主线程将一些数据传递给隔离的好方法。
如果我希望分离株成为产生信息的人怎么办?就像游戏引擎一样,它在工作线程中完成所有物理操作,然后将更新的世界信息发送到主线程?在 JavaScript 中,您可以随时发送数据。 Dart 有没有一种有效的方法?还是我还得等主线程调用我再传给它?
附:我想知道,是吗打电话然后阻塞线程直到回复完成或未完成?
从 Dart 1.0 开始,您可以像这样使用隔离:
import 'dart:isolate';
import 'dart:async';
void doStuff(SendPort sendPort) {
print('hi from inside isolate');
ReceivePort receivePort = new ReceivePort();
sendPort.send(receivePort.sendPort);
receivePort.listen((msg) {
print('Received in isolate: [$msg]');
sendPort.send('ECHO: $msg');
});
}
void main() {
SendPort sendPort;
ReceivePort receive = new ReceivePort();
receive.listen((msg) {
if (sendPort == null) {
sendPort = msg;
} else {
print('From isolate: $msg');
}
});
int counter = 0;
Isolate.spawn(doStuff, receive.sendPort).then((isolate) {
new Timer.periodic(const Duration(seconds:1), (t) {
sendPort.send('Count is ${counter++}');
});
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)