Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Flutter Thread Merge - Flutter Tokyo #11
Search
JaiChangPark
November 26, 2025
Technology
1
230
Flutter Thread Merge - Flutter Tokyo #11
Flutter Thread Merge - Flutter Tokyo #11
Jaichangpark, 박제창
JaiChangPark
November 26, 2025
Tweet
Share
More Decks by JaiChangPark
See All by JaiChangPark
DevFest Daegu 2025 - Flutter Agent App A to Z with Gemini, GenUI, A2UI 박제창
itsmedreamwalker
0
94
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
260
Building AI Agents with Agent Develeopment Kit Go, 박제창 @DevFest Cloud x Seoul 2025
itsmedreamwalker
1
45
オフライン対応!Flutterアプリに全文検索エンジンを実装する @FlutterKaigi2025
itsmedreamwalker
2
890
Getting Started with On-Device AI in Flutter - Flutter Alliance 2025
itsmedreamwalker
0
180
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
200
Flutter로 Gemini와 MCP를 활용한 Agentic App 만들기 - 박제창 2025 I/O Extended Seoul
itsmedreamwalker
0
220
[Hands-on] How to build Agentic Apps with Flutter - 박제창 @2025 IO Extended Incheon
itsmedreamwalker
0
150
2025 Build with AI for Everyone - Hands on : Go 언어로 AI & Agents 서비스 개발하기: Langchain, Eino 활용까지 @박제창
itsmedreamwalker
0
68
Other Decks in Technology
See All in Technology
入社1ヶ月でデータパイプライン講座を作った話
waiwai2111
1
210
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
Vitest Highlights in Angular
rainerhahnekamp
0
120
AIとともに歩む情報セキュリティ / Information Security with AI
kanny
4
3k
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
210
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
110
オープンウェイトのLLMリランカーを契約書で評価する / searchtechjp
sansan_randd
3
530
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
130
2026年はチャンキングを極める!
shibuiwilliam
8
1.8k
What happened to RubyGems and what can we learn?
mikemcquaid
0
180
Amazon ElastiCacheのコスト最適化を考える/Elasticache Cost Optimization
quiver
0
350
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
200
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Embracing the Ebb and Flow
colly
88
5k
Unsuck your backbone
ammeep
671
58k
How GitHub (no longer) Works
holman
316
140k
Bash Introduction
62gerente
615
210k
How to build a perfect <img>
jonoalderson
1
4.9k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Navigating Team Friction
lara
192
16k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Prompt Engineering for Job Search
mfonobong
0
150
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
150
Transcript
Flutter Thread Merge Dart threading changes GDE Dart-Flutter, Flutter Seoul
GDG Golang Korea @jaichangpark Dreamwalker
Advances and Challenges in Foundation Agents: From Brain-Inspired Intelligence to
Evolutionary, Collaborative, and Safe Systems https://arxiv.org/pdf/2504.01990
None
• プロセスは「独立した工場」である。 • 工場は独立した建物(独立したメモリ空間)を持つ。 • 1つのプロセスが落ちても、他のプロセスには影響がない。 ◦ A工場が崩れても、隣のB工場は影響を受けない。 Process
• スレッドは「工場の中で働く従業員」である。 • プロセスには最低1つのスレッド(メインスレッド)が存在する。 ◦ 工場を動かすためには、最低1人以上の従業員が必要である。 • メモリ(Code・Data・Heap)を共有する。 ◦ 従業員は工場内の食堂・倉庫・道具を共有する。
• スレッドのエラーはプロセス全体を停止させる可能性がある。 ◦ 1人の従業員が事故を起こして火事になると、工場全体が停止する。 スレッド Thread
None
None
None
None
動作方式 • Thread A と Thread B が、同じ変数 count に同時にアクセスして更新できる。
メリット • データ共有が非常に速い。(ただ読むだけで良い) • メモリ効率が良い。 デメリット • 同時実行問題(Race Condition) ◦ 複数のスレッドが同時に同じ変数を更新すると値が壊れる。 • ロックが必要 ◦ それを防ぐために「今使っているから待て(Lock)」という制御が必要になる。ロックが複雑になる とデッドロックが発生し、アプリ全体が停止する危険がある Thread A と Thread B が、同じ変数 count に同時にアクセスして更新できる。 メモリ(Heap)を共有する。
Dart(Flutter) が採用している独特の並行処理モデルであり、名前の通り 完全に隔離(Isolate) されている。 核心特徴 • メモリを一切共有しない。 動作方式 • Isolate
A と Isolate B は、完全に独立した別人である。 • それぞれが独自のメモリ空間(Heap)を持つ。 • A から B にデータを渡す場合、メッセージ(Message Passing) を使う。 • このときデータは コピー(Copy) されて送られる。 アイソレート Isolates
メリット • 安全性が高い: メモリ共有がないため、Lock を使う必要がなく、レースコンディションがほ ぼ発生しない。 • GC(ガベージコレクション)の効率が良い • A
が忙しくて GC が走っても、B は停止せずに処理を続けられる。→ UI のカクつきを防ぎ やすい。 デメリット • データ転送コスト ◦ データをコピーして送るため、1GB の画像など巨大なデータのやり取りは遅くなる。 アイソレート Isolates
None
区分 Thread(一般的) Isolate(Dart / Flutter) メモリ 共有する(Shared Memory) 共有しない(No Shared
Memory) 通信方 法 変数に直接アクセス メッセージ通信(Port を利用) 同期 開発者が Lock を管理する(難しい) 不要(自動的に安全) 比喩 同じオフィスで机を共有して働く社員 別々の部屋にいて、電話でやり取りする社 員
• プラットフォームスレッド (Platform thread) • UIスレッド (UI thread) • ラスタースレッド
(Raster thread) • I/Oスレッド (I/O thread) Flutter uses several threads
• プラットフォーム側のメインスレッド。 • プラグインコードが実行される。 • Performance Overlay には表示されない。 プラットフォームスレッド Platform
thread
• Dart コードと Flutter フレームワークが実行されるスレッド。 • レイヤーツリーを生成し、Raster Thread に送る。 •
ブロックしないこと。 • Performance Overlay の 下段に表示。 UIスレッド UI thread
• レイヤーツリーを受け取り、GPU と連携して描画する。 • Skia / Impeller がここで動作。 • 遅い場合は多くが
Dart 側の処理の影響。 • Performance Overlay の 上段に表示。 ラスタースレッド Raster thread
• ファイル、画像デコード、ネットワークなど重い I/O を担当。 • UI / Raster をブロックしないための作業用スレッド。 •
Performance Overlay には表示されない。 I/Oスレッド I/O thread
DEMO Flutter < 3.29
final result = await applyFilterAsync(imageData: _imageBytes!); final result = applyFilterSync(imageData:
_imageBytes!);
ASYNC SYNC
None
None
https://blog.flutter.dev/whats-new-in-flutter-3-29-f90c380c2317
Platform Thread (Kotlin, Swift) UI Thread (Dart Code) Raster Thread
(C++)
問題 • 従来は、非常に簡単なプラットフォーム情報(例:バッテリー残量の取得、ファイ ル存在確認)であっても、 • UI スレッド ↔ Platform スレッド
の通信が必要であった。 0.001ms で終わる処理でも、スレッドをまたぐ必要があり、強制的に async/await を使わざるを得なかった。
Platform Thread Raster Thread Kotlin Swift Dart Code
DEMO Flutter >= 3.29
None
ASYNC SYNC
None
None
軽量タスク • Main Thread でそのまま実行する。 • 例:バッテリー確認、キャッシュ参照、簡単な計算、短時間で終わる FFI 呼び出 し。
重量タスク(> 1ms) • 必ず Isolate に送る。 • 例:ファイル I/O、画像処理、ネットワーク要求、データベース検索。
Thank You!