Özet - Isolate'ler
- Dart kursu
- İleri seviye
- Ders 6/83
- 5 dk
spawn, SendPort ve compute'u birleştirerek bir paralel hesap yazarsın.
Özet - Isolate'ler
Bu grupta isolate'leri öğrendik: kendi belleği ve event loop'u olan izole iş birimleri. Thread'lerin aksine bellek paylaşmazlar; iletişim SendPort/ReceivePort ile olur.
Üç temel API gördük: Isolate.spawn (uzun ömürlü, mesajlaşmalı), Isolate.run (tek sonuç, Dart 3), compute (Flutter sarmalı, tek sonuç).
Özet: CPU-ağırlık işleri arka plana taşımak UI'yi akıcı tutar; küçük işlerde ise maliyeti yüksektir.
Uygulama Özet: tek sonuç hesabı
int faktoriyel(int n) fonksiyonu tanımla: n! değerini döndürsün (n=5 → 120). main'i async yap; var result = await Isolate.run(() => faktoriyel(5)); ve print(result); ekle.
Başlangıç kodu
import 'dart:isolate';
void main() {
// faktoriyel fonksiyonunu tanımla (main dışında)
// async yap; Isolate.run ile faktoriyel(5) çağrısı ekle
}Örnek çözüm
import 'dart:isolate';
int faktoriyel(int n) {
var f = 1;
for (var i = 2; i <= n; i++) {
f *= i;
}
return f;
}
void main() async {
var result = await Isolate.run(() => faktoriyel(5));
print(result);
}Beklenen çıktı
120
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Sürekli haberleşme için hangisi?
- compute
- Isolate.spawn Doğru cevap
- Isolate.run
- Future.wait
Açıklama: Isolate.spawn açık port'larla sürekli haberleşme sağlar.
2 API'leri kullanımlarıyla eşleştir
| Kavram | Anlamı |
|---|---|
Isolate.spawn |
Uzun ömürlü isolate |
Isolate.run |
Tek sonuç (Dart 3) |
compute |
Flutter sarmalı |
ReceivePort |
Mesaj akışı |
3 İletişim kanalı
var port = ____();
var port = ReceivePort();
Açıklama: ReceivePort açılır, sendPort spawn'a aktarılır.