import 'dart:isolate'; import 'dart:io'; void main() { print('main isolate start'); create_isolate(); print('main isolate end'); //执行结果: //main isolate start //main isolate end //main isolate listen:{type: port, data: SendPort} //main isolate listen:{type: message, data: new isolate finish} //new isolate listen:{type: message, data: main isolate message} } void create_isolate() async { SendPort sendPort; ReceivePort receivePort = ReceivePort(); //告知new isolate,main isolate的接收端口是多少。 Isolate newIsolate = await Isolate.spawn(doWork, receivePort.sendPort); //接受子线程的传回的内容 receivePort.listen((message) { print('main isolate listen:$message'); if (message['type'] == 'port') { sendPort = message['data']; } else { sendPort?.send({'type': 'message', 'data': 'main isolate message'}); } }); } void doWork(SendPort sendPort) { ReceivePort receivePort = ReceivePort(); //接受主线程的传回的内容 receivePort.listen((message) { print('new isolate listen:$message'); }); //发送数据 sendPort.send({'type': 'port', 'data': receivePort.sendPort}); //模拟发送 sleep(Duration(seconds: 3)); sendPort?.send({'type': 'message', 'data': 'new isolate finish'}); }
dart笔记22:Isolate使用案例
dart笔记22:Isolate使用案例,在dart里,所有的dart代码都运行在一个Isolate里,重新开个Isolate,相当于开个微进程,多个进程之间通过port发送和接收数据: