2014-01-07 5 views
5

Ich habe vor kurzem mit Dart (www.dartlang.org) begonnen und mag es wirklich so weit. Ein sehr vielversprechendes Merkmal sind Isolate, aber ich bin mir nicht sicher, wie ich anfangen soll.Neue Dokumentation über Dart-Isolate

Die Dokumentation, die ich bis jetzt gefunden habe, stammt aus einer vorbrechenden Änderung (BREAKING CHANGE: dart:isolate) im Oktober 2013. Die Informationen in dieser "Breaking change" E-Mail sind ziemlich kompliziert und es sieht so aus als wäre die neue API komplizierter als die alte.

Ich habe einige Fragen bekommen:

  • Ist der Pfeil: isolieren api stabil?
  • Gibt es eine aktuelle Dokumentation?
  • Gibt es Arbeitsbeispiele?

Vielen Dank für jede Hilfe, Hendrik Jan

Antwort

3

habe ich versucht, dieses Beispiel und es funktioniert https://gist.github.com/olostan/7883315

import "dart:isolate"; 

void main() { 
    print("Starting"); 
    var sPort = new ReceivePort(); 
    SendPort rPort; 
    sPort.listen((msg) { 
    if (msg is SendPort) { 
     print("Host got port. sending back"); 
     rPort = msg; 
     rPort.send("Hello!"); 
    } 
    else print("Host got $msg"); 
    rPort.send(null); 
    sPort.close(); 
    }); 
    Isolate.spawn(test,sPort.sendPort); 
} 
void test(sender) { 
    var rPort = new ReceivePort(); 
    sender.send(rPort.sendPort); 
    rPort.listen((msg){ 
    print("Worker got $msg"); 
    if (msg!=null) 
     sender.send("I am worker"); 
    else rPort.close(); 
    }); 
} 

Isolaten scheinen nicht zu viel noch verwendet werden, so gibt es immer noch einige Fehler sein kann.
Die neuesten Probleme, an die ich mich erinnere, waren Debugging-Code, der in Isolaten lief. Ich weiß nicht, ob das schon gelöst ist.
Es hängt auch davon ab, ob Sie Isolate auf dem Server oder im Browser verwenden möchten.
AFAIK ist es stabiler in der VM.

+0

Hallo Günter, Danke. Ich habe Dart nie auf einem Server benutzt. Auf Dartium bekomme ich "spawnFunction wird nicht von einem DOM-fähigen Isolat unterstützt". Weißt du, ob das in Zukunft funktionieren wird? (Ich weiß, ich kann spawnUri wie hier gezeigt: http://japhr.blogspot.nl/2013/11/new-fangled-dart-isolates.html, aber das sieht umständlicher). –

+0

Oh, ich hatte geplant, diesen Link auch hinzuzufügen, aber offensichtlich vergessen. Freut mich, dass du es trotzdem gefunden hast. Ich sah in Chris 'Post, dass die 'spawnFunction()' nicht unterstützt' wird geworfen, auch wenn 'spawn() 'verwendet wurde. Ich habe auch nicht mehr Informationen über diese Architektur. Ich schlage vor, eine Frage zu der Dart-Gruppe zu stellen, auf die Sie mit dem Beitrag "BREAKING CHANGE" verwiesen haben. –

+2

@hendrik - siehe weitere Beispiele [is-there-any-Beispiel-für-Darts-spawnuri-in-Bibliothek-dartisolate] (https://stackoverflow.com/questions/17299512/is-there-any-example- For-Darts-Spawnuri-in-Bibliothek-Dartisolate/25104337). Es scheint, dass der zusätzliche Overhead mit "Isolate.spawnUri" 1) deinen Code in eine separate Bibliothek 2) setzt, die sich mit der 'Zukunft' befasst, die dir sagt, ob das Isolat in Ordnung ist, von da an ist es alles identisch. –

Verwandte Themen