Pemrograman Dart - Concurrency

Concurrencyadalah pelaksanaan beberapa urutan instruksi pada waktu yang bersamaan. Ini melibatkan melakukan lebih dari satu tugas secara bersamaan.

Dart menggunakan Isolatessebagai alat untuk melakukan pekerjaan secara paralel. Itudart:isolate package adalah solusi Dart untuk mengambil kode Dart single-threaded dan memungkinkan aplikasi memanfaatkan perangkat keras yang tersedia secara lebih baik.

Isolates, seperti namanya, adalah unit terisolasi dari kode yang sedang berjalan. Satu-satunya cara untuk mengirim data di antara mereka adalah dengan meneruskan pesan, seperti cara Anda meneruskan pesan antara klien dan server. Sebuahisolate membantu program untuk memanfaatkan mikroprosesor multicore di luar kotak.

Contoh

Mari kita ambil contoh untuk memahami konsep ini dengan lebih baik.

import 'dart:isolate';  
void foo(var message){ 
   print('execution from foo ... the message is :${message}'); 
}  
void main(){ 
   Isolate.spawn(foo,'Hello!!'); 
   Isolate.spawn(foo,'Greetings!!'); 
   Isolate.spawn(foo,'Welcome!!'); 
   
   print('execution from main1'); 
   print('execution from main2'); 
   print('execution from main3'); 
}

Di sini spawn metode dari Isolate kelas memfasilitasi menjalankan suatu fungsi, foo, secara paralel dengan kode lainnya. Ituspawn fungsi membutuhkan dua parameter -

  • fungsi yang akan ditelurkan, dan
  • sebuah objek yang akan diteruskan ke fungsi spawned.

Jika tidak ada objek untuk diteruskan ke fungsi spawned, itu bisa diberikan nilai NULL.

Kedua fungsi tersebut (foo and main)mungkin tidak selalu berjalan dalam urutan yang sama setiap saat. Tidak ada jaminan kapanfoo akan dieksekusi dan kapan main()akan dieksekusi. Outputnya akan berbeda setiap kali Anda menjalankan.

Keluaran 1

execution from main1 
execution from main2 
execution from main3 
execution from foo ... the message is :Hello!!

Keluaran 2

execution from main1 
execution from main2 
execution from main3 
execution from foo ... the message is :Welcome!! 
execution from foo ... the message is :Hello!! 
execution from foo ... the message is :Greetings!!

Dari keluarannya, kita dapat menyimpulkan bahwa kode Dart dapat menelurkan yang baru isolate dari menjalankan kode seperti cara kode Java atau C # dapat memulai utas baru.

Isolates berbeda dari utas dalam hal itu isolatememiliki ingatannya sendiri. Tidak ada cara untuk membagi variabel di antaranyaisolates—Satu-satunya cara untuk berkomunikasi isolates adalah melalui penyampaian pesan.

Note - Output di atas akan berbeda untuk perangkat keras dan konfigurasi sistem operasi yang berbeda.

Isolate v / s Future

Melakukan pekerjaan komputasi yang rumit secara asinkron penting untuk memastikan daya tanggap aplikasi. Dart Future adalah mekanisme untuk mengambil nilai tugas asinkron setelah selesai, while Dart Isolates adalah alat untuk mengabstraksi paralelisme dan menerapkannya secara praktis pada tingkat tinggi.