0Pricing
Dart Academy · レッスン

スレッドではなく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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. スレッドではなくIsolateを使う理由
  2. 高速な処理委譲にIsolate.runを使う
  3. Isolate の生成とメッセージパッシング
  4. カクつきを防ぐ高負荷処理
← Dart Academyに戻る