美文网首页
dart isolate demo

dart isolate demo

作者: iCloudEnd | 来源:发表于2019-01-28 12:09 被阅读23次
    import 'dart:async';
    import 'dart:isolate';
    
    main() async {
      var receivePort = new ReceivePort();
      await Isolate.spawn(echo, receivePort.sendPort);
    
      // The 'echo' isolate sends it's SendPort as the first message
      var sendPort = await receivePort.first;
    
      var msg = await sendReceive(sendPort, "foo");
      print('received $msg');
      msg = await sendReceive(sendPort, "bar");
      print('received $msg');
    }
    
    // the entry point for the isolate
    echo(SendPort sendPort) async {
      // Open the ReceivePort for incoming messages.
      var port = new ReceivePort();
    
      // Notify any other isolates what port this isolate listens to.
      sendPort.send(port.sendPort);
    
      await for (var msg in port) {
        var data = msg[0];
        SendPort replyTo = msg[1];
        replyTo.send(data);
        if (data == "bar") port.close();
      }
    }
    
    /// sends a message on a port, receives the response,
    /// and returns the message
    Future sendReceive(SendPort port, msg) {
      ReceivePort response = new ReceivePort();
      port.send([msg, response.sendPort]);
      return response.first;
    }
    

    运行方法,在命令行中

    dart isolate_demo.dart
    $ dart isolate_demo.dart 
    received foo
    received bar
    
    

    相关文章

      网友评论

          本文标题:dart isolate demo

          本文链接:https://www.haomeiwen.com/subject/cjhajqtx.html