CodeBlanks Logo Icon CodeBlanks

Isolate vs thread

Isolate ve thread farkını öğrenirsin.

Isolate vs thread

Klasik dillerde thread'ler aynı belleği paylaşır; bu yüzden lock, mutex, condition variable gibi senkronizasyon araçlarına gerek vardır. Hatalar kolayca yarış koşuluna dönüşür.

Dart'ta ise isolate'ler bellek paylaşmaz. Her isolate kendi yığınına ve nesnelerine sahiptir. Veri, mesaj olarak kopyalanarak aktarılır.

Sonuç: Dart'ta kilit gerekmez, ama veri kopyalama maliyeti vardır. Bu yüzden küçük işler için isolate açmak pahalıdır; yalnızca gerçekten ağır işlerde kullanılır.

Ne zaman isolate?

İyi kullanım: 50 ms'den uzun süren CPU-ağırlık işler — JSON ayrıştırma, görüntü işleme, dosya tarama. Bunları ana isolate'te tutmak UI'yi dondurur.

Kötü kullanım: 5 ms'lik hesaplar. Isolate açma maliyeti (kopyalama + zamanlama) işin kendisinden büyüktür. Bu durumda normal senkron kod yeter.

I/O beklemek (ağ, disk) için isolate gerekmez; Future ve async/await yeter. Isolate CPU işleri içindir.

Uygulama Ağır işi Isolate.run ile yap

int kareToplam(int n) fonksiyonu tanımla: 1'den n'ye kadar sayıların kareleri toplamını döndürsün. main'i async yap; var result = await Isolate.run(() => kareToplam(100)); ve print(result); ekle.

Başlangıç kodu

main.dart
import 'dart:isolate';

void main() {
  // kareToplam fonksiyonunu tanımla (main dışında)
  // async yap; Isolate.run ile kareToplam(100) çağrısı ekle
}

Örnek çözüm

main.dart
import 'dart:isolate';

int kareToplam(int n) {
  var t = 0;
  for (var i = 1; i <= n; i++) {
    t += i * i;
  }
  return t;
}

void main() async {
  var result = await Isolate.run(() => kareToplam(100));
  print(result);
}

Beklenen çıktı

338350

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi araç gerekmez?

Soru
Isolate'lerde ____ gerekmez.
Cevap
Isolate'lerde lock gerekmez.

Açıklama: isolate'ler bellek paylaşmaz, kilit gerekmez.

2 Karşılaştırma tablosu

Kavram Anlamı
Thread Bellek paylaşır
Isolate Bellek paylaşmaz
Lock Thread'lerde gerek
Mesaj Isolate'lerde aktarım

3 Hangisi için isolate açmak anlamsızdır?

  • 5 ms'lik toplama işlemi Doğru cevap
  • 4K görüntü yeniden boyutlandırma
  • 10 MB JSON ayrıştırma
  • 10 bin satırlık CSV okuma

Açıklama: 5 ms'lik iş için isolate açma maliyeti işten büyüktür.

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