Isolate nedir?
- Dart kursu
- İleri seviye
- Ders 1/83
- 5 dk
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
void main() {
// entryPoint fonksiyonunu tanımla (main dışında)
// main içinde çağrı ekle
}Örnek çözüm
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
Isolate.spawn(
____,
['görev-1'],
);
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 |