スレッドではなくIsolateを使う理由
Dartのメモリ分離モデルを理解する
「スレッドではなくIsolateを使う理由」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
デフォルトでは1つのThread
Dartのコードは、独自のメモリとイベントループを持つworkerである1つのisolate上で実行されます。追加を要求しない限り、すべてはここで行われます。
Isolateの意味
名前が示すとおり、各isolateは分離されています。別のisolateの変数やオブジェクトに直接アクセスすることはできません。🔒
共有メモリはない
多くの言語ではThreadがメモリを共有するため、race conditionが起こりやすくなります。Dartのisolateには共有メモリがないため、この種類のバグは発生しません。
それが役立つ理由
共有されるものがないため、isolate間でlockやmutexを使う必要はありません。並行処理がよりシンプルになり、はるかに理解しやすくなります。
メッセージで通信する
Isolateは互いのデータに触れるのではなく、messageを渡して協調します。机を共有するのではなく、コピーを郵送するようなものだと考えてください。📬
メッセージはコピーされる
isolate間でデータを送ると、Dartは通常そのデータをcopyします。受信側は独自のデータを持つため、どちらの側も相手のデータを壊せません。
Main Isolate
すべてのプログラムはmain isolateから始まります。FlutterではここにUIが存在するため、応答性を保つ必要があります。
Mainがブロックされるとき
main isolateで負荷の高い処理を行うと、イベントループがblockされます。その間は他の処理を実行できないため、UIが固まり、フレームが欠落します。
asyncはParallelではない
asyncも1つのisolate上で実行されることを覚えておきましょう。処理を入れ替えながら実行しますが、負荷の高い計算に実際のCPU並列性を追加することはありません。
IsolateはParallelに実行される
2つ目のisolateは、別のCPUコア上で同時に実行できます。これは真の並列処理であり、数値計算に最適です。
Isolateを使う場面
巨大なJSONの解析や画像処理など、CPU負荷の高い処理にはisolateを使います。I/Oの待機には、通常のasyncで十分です。
簡単な確認
Dartのisolateがrace conditionを回避できるのはなぜですか?
まとめ
Dartのisolateは、独自のメモリとイベントループを持ちます。isolateは並列に実行され、コピーされたメッセージで通信するため、安全な並行処理を実現できます。✅
よくある質問
「スレッドではなくIsolateを使う理由」レッスンは無料ですか?
はい。「スレッドではなくIsolateを使う理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「スレッドではなくIsolateを使う理由」で何を学びますか?
Dartのメモリ分離モデルを理解する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「スレッドではなくIsolateを使う理由」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- スレッドではなくIsolateを使う理由
- 高速な処理委譲にIsolate.runを使う
- Isolate の生成とメッセージパッシング
- カクつきを防ぐ高負荷処理