如何让Dart在服务器中运行单独的进程?

时间:2019-10-25 13:07:54

标签: dart

例如,这是一个简单的飞镖代码:

#import('dart:io');

main() {
  var server = new HttpServer();
  server.listen('127.0.0.1', 8080);
  server.defaultRequestHandler = (HttpRequest request, HttpResponse response) {
    response.outputStream.write('Hello, world'.charCodes());
    response.outputStream.close();
  };
}

当网络服务器打印“ Hello,world”时,我想运行一个进度 繁重的任务,但不想阻止当前的过程。我可以知道如何处理吗?谢谢。

我尝试了Process.runProcess.start,但没有成功。

1 个答案:

答案 0 :(得分:1)

根据您的评论,我可以看出Dart产生外部流程的方式存在误解。当您在Dart中生成进程时,默认情况下该进程正在运行,因此Dart程序和外部程序分别运行(因此在不同的进程中),并且Dart程序可以执行其他任务。然后,您可以等待程序的结果(例如,程序关闭时)。

因此,以“&”为参数运行该进程没有多大意义(我想这是试图告诉它应与Dart程序分开运行)。

但是,由于您正在生成另一个Dart程序,因此您还应该考虑使用一个Isolate,它可以在另一个线程上执行您自己的方法,或者使用以下命令运行外部代码: https://api.dart.dev/stable/2.6.0/dart-isolate/Isolate/spawnUri.html