Dart - получение «искаженного сообщения» в консоли при порождении нескольких изолятов - PullRequest
0 голосов
/ 20 ноября 2018

Я новичок в dart, и я пытаюсь запустить несколько алгоритмов, используя изоляты, чтобы более эффективно запускать их несколько раз, однако, при вызове более одной функции с Isolate.spawn я начинаю получать 'Malformed message' в консоли , это все еще работает, но я хотел бы знать, почему я получаю это сообщение, также любая помощь в улучшении кода приветствуется, так как я все еще изучаю тонкости использования изолятов

 stressTest()
{
ReceivePort rpDouble = new ReceivePort();
ReceivePort rpString = new ReceivePort();
ReceivePort rpInteger = new ReceivePort();
int counter = 0;
int tempoTotal = 0;

  rpDouble.listen((data) {
    counter++;
    tempoTotal += data; //data is a stopwatch.toMilliseconds
    setState(() {  //updating the "progress" and the time it took to run the algorithm in the ui
      test = counter.toString() + '%';
      _counter = tempoTotal.toString();
    });
  });
rpInteger.listen((data){
  counter++;
  tempoTotal += data;
  setState(() {
    test = counter.toString() + '%';
    _counter = tempoTotal.toString();
  });
});
rpString.listen((data){
  counter++;
  tempoTotal += data;
  setState(() {
    test = counter.toString() + '%';
    _counter = tempoTotal.toString();
  });
});

for(int i = 0; i < 5; i++) {
  Isolate.spawn(DoubleTest, rpDouble.sendPort);
  Isolate.spawn(StringStress, rpString.sendPort);
  Isolate.spawn(integerTest, rpInteger.sendPort);
}
}
}

DoubleTest, StringStress и IntegerTest - это функции, которые возвращают целое число stopwatch.toMilliseconds в sendPort.

Заранее спасибо, любая помощь приветствуется

...