Isolate vs thread
- Dart kursu
- İleri seviye
- Ders 5/83
- 5 dk
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
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
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?
Isolate'lerde ____ gerekmez.
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.