我爱模板网 > 建站教程 > dart >  dart笔记22:Isolate使用案例正文

dart笔记22:Isolate使用案例

dart笔记22:Isolate使用案例,在dart里,所有的dart代码都运行在一个Isolate里,重新开个Isolate,相当于开个微进程,多个进程之间通过port发送和接收数据:
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笔记21:BlocProvider工具实现管理多个stream流 下一篇:dart笔记23:flutter的isolate使用
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
选择头像:
最新评论

猜你喜欢