Dart-programming-concurrency
提供:Dev Guides
Dartプログラミング-並行性
- 同時実行*は、複数の命令シーケンスを同時に実行することです。 複数のタスクを同時に実行する必要があります。
Dartは、並行して作業を行うためのツールとして Isolates を使用しています。 dart:isolate パッケージは、シングルスレッドのDartコードを取得し、アプリケーションが利用可能なハードウェアをより活用できるようにするDartのソリューションです。
例
この概念をよりよく理解するために例を見てみましょう。
ここでは、 Isolate クラスの spawn メソッドにより、コードの残りの部分と並行して関数 foo を実行できます。 *スポーン*関数は2つのパラメータを取ります-
- 生成される関数、および
- 生成された関数に渡されるオブジェクト。
生成された関数に渡すオブジェクトがない場合、NULL値を渡すことができます。
2つの関数*(fooとmain)は毎回同じ順序で実行されるとは限りません。 *foo がいつ実行され、いつ* main()*が実行されるかについての保証はありません。 出力は実行するたびに異なります。
出力1
出力2
出力から、Dartコードは、JavaまたはC#コードが新しいスレッドを開始できるように、実行中のコードから新しい isolate を生成できると結論付けることができます。
注-上記の出力は、ハードウェアおよびオペレーティングシステムの構成によって異なります。
v/s Futureを分離
複雑な計算作業を非同期で行うことは、アプリケーションの応答性を確保するために重要です。 Dart Future は非同期タスクの値を完了後に取得するためのメカニズムであり、* Dart Isolatesは並列処理を抽象化し、実用的な高レベルで実装するためのツールです。