Dart-Programmierung - Parallelität
Concurrencyist die gleichzeitige Ausführung mehrerer Befehlssequenzen. Dabei werden mehrere Aufgaben gleichzeitig ausgeführt.
Dart benutzt Isolatesals Werkzeug für parallele Arbeiten. Dasdart:isolate Paket ist Darts Lösung, um Single-Threaded-Dart-Code zu verwenden und der Anwendung zu ermöglichen, die verfügbare Hardware besser zu nutzen.
IsolatesWie der Name schon sagt, handelt es sich um isolierte Einheiten des laufenden Codes. Die einzige Möglichkeit, Daten zwischen ihnen zu senden, besteht darin, Nachrichten zu übergeben, wie Sie Nachrichten zwischen dem Client und dem Server übergeben. Einisolate hilft dem Programm, Multicore-Mikroprozessoren sofort zu nutzen.
Beispiel
Nehmen wir ein Beispiel, um dieses Konzept besser zu verstehen.
import 'dart:isolate';
void foo(var message){
print('execution from foo ... the message is :${message}');
}
void main(){
Isolate.spawn(foo,'Hello!!');
Isolate.spawn(foo,'Greetings!!');
Isolate.spawn(foo,'Welcome!!');
print('execution from main1');
print('execution from main2');
print('execution from main3');
}
Hier das spawn Methode der Isolate Klasse erleichtert das Ausführen einer Funktion, foo, parallel zum Rest unseres Codes. Dasspawn Funktion nimmt zwei Parameter -
- die zu erzeugende Funktion und
- Ein Objekt, das an die erzeugte Funktion übergeben wird.
Falls kein Objekt an die erzeugte Funktion übergeben werden kann, kann ihm ein NULL-Wert übergeben werden.
Die beiden Funktionen (foo and main)wird möglicherweise nicht jedes Mal in derselben Reihenfolge ausgeführt. Es gibt keine Garantie, wannfoo wird ausgeführt und wann main()wird ausgeführt. Die Ausgabe ist bei jeder Ausführung anders.
Ausgabe 1
execution from main1
execution from main2
execution from main3
execution from foo ... the message is :Hello!!
Ausgabe 2
execution from main1
execution from main2
execution from main3
execution from foo ... the message is :Welcome!!
execution from foo ... the message is :Hello!!
execution from foo ... the message is :Greetings!!
Aus den Ausgaben können wir schließen, dass der Dart-Code einen neuen erzeugen kann isolate Ausführen von Code wie der Art und Weise, wie Java- oder C # -Code einen neuen Thread starten kann.
Isolates unterscheiden sich von Threads darin, dass ein isolatehat ein eigenes Gedächtnis. Es gibt keine Möglichkeit, eine Variable zwischen ihnen zu teilenisolates- der einzige Weg, um zwischen zu kommunizieren isolates erfolgt über die Nachrichtenübermittlung.
Note - Die obige Ausgabe ist für verschiedene Hardware- und Betriebssystemkonfigurationen unterschiedlich.
V / s-Zukunft isolieren
Das asynchrone Ausführen komplexer Rechenarbeiten ist wichtig, um die Reaktionsfähigkeit von Anwendungen sicherzustellen. Dart Future ist ein Mechanismus zum Abrufen des Werts einer asynchronen Aufgabe nach deren Abschluss Dart Isolates sind ein Werkzeug, um Parallelität zu abstrahieren und auf praktischer Ebene umzusetzen.