Dart Isolates nedir? Neden Kullanılır?

Dart single-threaded çalışan bir yapıya sahiptir. Main() metodu aslında tek başına bir isolate barındırır.

Isolateler belleği kullanırken diğeleri ile paylaşmazlar.

Isolate’in türkçe karşılığı izole etmektir.

Isolate programınız bloke olmadan async programlamaya izin verir.

Dart Isolates paralel bir şekilde kod çalışmamızı sağlar. Daha iyi anlaşılması adına şu şekilde bir örnek verebilirim:

Async yapı kodusunuz sırayla çalışmasını sağlarken, islolatesler kodlarınızın paralel çalışmasına yarar.

Async diğer çalışmaları engellemeden programı bekleterek çalıştırmayı sağlar.

Async ve Isolate Farkı

Yani async bir program düşünelim hem bulaşık yıkarken hem kitap okuyamayabilirsiniz.

Ama isoletlerle hem müzik dinlerken hem de kitap okuyabilirsiniz. Isoletler paralel yapılabilen işlerde kullanılır.

Başka bir isolate örneği; Mesela instagram’da reels yüklerken yükleme devam ederken akışta gezinebiliyorsunuz.

Isolate oluşturmak için:

import ‘dart:isolate’

Isalete isolate;

Isolate’i durdukmak için:

isolate.kill();

Isolate ile ilgili bilinmesi gereken terimler:

  1. ReceivePort: Isolate’in tepkisini dinlememizi sağlar. Yanıt almamızı sağlar.
  2. Capability
  3. SendPort: Mesaj göndermemizi sağlar.

Isolate oluşturmanın iki yöntemi vardır

  1. Isolate.spawn()
  2. compute()

isolate.resume() -> Isolate’i duraklatmayı sağlar.

 

Bir Isolate Örneği;

Projemdeki state içerisinde Isolate ve ReceivePort diye iki tane değişken oluşturuyorum:

Bir tane async fonksiyon oluşturdum.

Isolate’imi dinleyeceği fonksiyonu yazdım:

Ve butona bastığımda Isolate’imi çalıştırıyorum:

dispose metoduyla isolate’imizi durdurup, reiveport’umuzu kapatmayı unutmuyoruz 🙂

Program çıktısı:

Api isteği ve FutureBuilder Örneği

 

Çıktı:

Paylaş:

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir