CodeBlanks Logo Icon CodeBlanks

Özet - Isolate'ler

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

main.dart
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

main.dart
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ı

Soru
var port = ____();
Cevap
var port = ReceivePort();

Açıklama: ReceivePort açılır, sendPort spawn'a aktarılır.

İleri seviye bölümündeki tüm dersler