CodeBlanks Logo Icon CodeBlanks

Isolate nedir?

Isolate ile Dart concurrency modelini öğrenirsin.

Isolate nedir?

Isolate, Dart'ın izole çalışan iş birimidir. Her isolate kendi bellek alanına, kendi event loop'una ve kendi yığınına sahiptir.

Thread'lerin aksine iki isolate belleği paylaşmaz; bu yüzden kilit (lock) ya da mutex gerekmez. İletişim yalnızca mesajlaşma ile — SendPort ve ReceivePort üzerinden — olur.

Bu tasarım yarış koşullarını (race condition) baştan ortadan kaldırır. Ağır işleri ana isolate'i bloklamadan arka plana taşımak için kullanılır.

Isolate nasıl başlatılır?

Yeni bir isolate Isolate.spawn(entryPoint, args) ile başlatılır. entryPoint bir top-level fonksiyon olmalıdır (statik metod da olur); kapalı (closure) değişken alamaz.

İmza: void entryPoint(List<String> args). args listesi spawn'a ikinci parametre olarak verilir; genellikle ilk eleman bir SendPort'tür.

Örnek: Isolate.spawn(worker, ['görev-1']);. Bu çağrı yeni isolate'i zamanlar; ana isolate devam eder.

Uygulama entryPoint fonksiyonunu tanımla

Top-level bir void entryPoint(List<String> args) fonksiyonu tanımla. Gövdesi print('Isolate ${args[0]} çalışıyor') yapsın. main içinde bu fonksiyonu ['görev-1'] argümanıyla çağır.

Başlangıç kodu

main.dart
void main() {
  // entryPoint fonksiyonunu tanımla (main dışında)

  // main içinde çağrı ekle
}

Örnek çözüm

main.dart
void entryPoint(List<String> args) {
  print('Isolate ${args[0]} çalışıyor');
}

void main() {
  entryPoint(['görev-1']);
}

Beklenen çıktı

Isolate görev-1 çalışıyor

Soru ve cevaplar

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

1 Isolate'ler hakkında hangisi doğrudur?

  • Kendi belleği vardır, paylaşılmaz Doğru cevap
  • Yalnızca tek CPU çekirdeği kullanır
  • Bellek paylaşır ve lock gerekir
  • Thread ile aynı anlama gelir

Açıklama: her isolate kendi belleğine sahiptir ve paylaşmaz.

2 spawn çağrısını tamamla

Soru
Isolate.spawn(
  ____,
  ['görev-1'],
);
Cevap
Isolate.spawn(
  entryPoint,
  ['görev-1'],
);

Açıklama: spawn ilk parametre olarak entryPoint fonksiyonunu alır.

3 Isolate kavramlarını eşleştir

Kavram Anlamı
Isolate İzole iş birimi
SendPort Mesaj gönderme kanalı
Memory Paylaşılmayan alan
Event loop Olay kuyruğu

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