Dart Concurrency

Dart Concurrency

Daftar Isi

Concurrency adalah eksekusi beberapa urutan instruksi pada saat yang sama atau paralel. Konsep ini akan membuat suatu aplikasi dapat melakukan lebih dari satu tugas secara simultan.

Dart menggunakan Isolates sebagai alat untuk melakukan pekerjaan secara paralel. Paket dart:isolate adalah solusi Dart untuk mengubah kode Dart dengan konsep single-threaded (satu task dalam satu waktu) menjadi kodeDart yang bisa menjalankan multi-thread (bisa menjalankan beberapa task dalam satu waktu).

Isolates, seperti namanya, adalah unit kode yang terisolasi. Satu-satunya cara untuk mengirim data antara Isolates adalah dengan mengirim pesan, seperti cara Anda mengirim pesan antara klien dan server. Isolates membantu program untuk memanfaatkan mikroprosesor multicore secara langsung.

Contoh

Mari kita ambil contoh untuk memahami konsep ini lebih baik.

import 'dart:isolate';  
void foo(var pesan){ 
   print('eksekusi dari foo ... pesannya adalah:${pesan}'); 
}  
void main(){ 
   Isolate.spawn(foo,'Halo!!'); 
   Isolate.spawn(foo,'Hai!!'); 
   Isolate.spawn(foo,'Selamat Datang!!'); 
   
   print('eksekusi dari main1'); 
   print('eksekusi dari main2'); 
   print('eksekusi dari main3'); 
}

Fungsi spawn dari kelas Isolate memungkinkan untuk menjalankan fungsi foo secara paralel dengan kode yang lain. Fungsi spawn membutuhkan dua parameter yaitu:

  • Fungsi yang akan dijalankan
  • Sebuah Object yang akan diteruskan ke dalam fungsi yang dijalankan

Jika tidak ada Object yang ingin diteruskan ke dalam fungsi yang dijalankan, dapat diisi dengan nilai NULL.

Kedua fungsi (foo dan main) mungkin tidak akan dijalankan dengan urutan yang sama setiap kali. Tidak ada jaminan kapan foo akan dieksekusi dan kapan main() akan dieksekusi. Outputnya akan berbeda setiap kali dijalankan.

Output 1

eksekusi dari main1
eksekusi dari main2
eksekusi dari main3
eksekusi dari foo ... pesannya adalah:Halo!!
eksekusi dari foo ... pesannya adalah:Selamat Datang!!
eksekusi dari foo ... pesannya adalah:Hai!!

Output 2

eksekusi dari main1
eksekusi dari foo ... pesannya adalah:Halo!!
eksekusi dari main2
eksekusi dari main3
eksekusi dari foo ... pesannya adalah:Hai!!
eksekusi dari foo ... pesannya adalah:Selamat Datang!!

Dari hasil keluaran, kita dapat menyimpulkan bahwa kode Dart dapat menciptakan isolate baru dari kode yang sedang berjalan seperti halnya kode Java atau C# yang dapat memulai thread baru.

Isolate berbeda dengan thread dalam hal memiliki memori sendiri. Tidak ada cara untuk berbagi variabel antara isolate dan satu-satunya cara untuk berkomunikasi antara isolate adalah melalui pengiriman pesan melalui parameter.

Catatan – Keluaran di atas akan berbeda untuk konfigurasi perangkat keras dan sistem operasi yang berbeda.

Isolate v/s Future #

Melakukan pekerjaan komputasi kompleks secara asynchronous penting untuk memastikan responsivitas aplikasi. Dart Future adalah mekanisme untuk mendapatkan nilai tugas asynchronous setelah selesai, sedangkan Dart Isolates adalah mekanisme yang lebih spesifik untuk menjalankan beberapa perintah secara paralel sekaligus. Keduanya mirip tapi bisa digunakan untuk hal yang berbeda tergantung kebutuhan program yang akan dibuat.

Tinggalkan Balasan

Keranjang Belanja0
Keranjang belanja kosong ...
0