Dart Programming - ภาวะพร้อมกัน

Concurrencyคือการดำเนินการตามลำดับคำสั่งหลาย ๆ คำสั่งในเวลาเดียวกัน มันเกี่ยวข้องกับการทำงานมากกว่าหนึ่งงานพร้อมกัน

ใช้ Dart Isolatesเป็นเครื่องมือในการทำงานควบคู่กันไป dart:isolate แพคเกจเป็นโซลูชันของ Dart ในการรับรหัส Dart แบบเธรดเดียวและอนุญาตให้แอปพลิเคชันใช้ประโยชน์จากฮาร์ดแวร์ที่มีอยู่ได้มากขึ้น

Isolatesตามชื่อที่แนะนำคือหน่วยที่แยกต่างหากของรหัสที่กำลังทำงานอยู่ วิธีเดียวในการส่งข้อมูลระหว่างกันคือการส่งข้อความเช่นวิธีที่คุณส่งผ่านข้อความระหว่างไคลเอนต์และเซิร์ฟเวอร์ อันisolate ช่วยให้โปรแกรมใช้ประโยชน์จากไมโครโปรเซสเซอร์แบบหลายตัวได้ทันที

ตัวอย่าง

ลองมาเป็นตัวอย่างเพื่อทำความเข้าใจแนวคิดนี้ดีกว่า

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'); 
}

ที่นี่ spawn วิธีการของ Isolate คลาสอำนวยความสะดวกในการเรียกใช้ฟังก์ชัน fooควบคู่ไปกับส่วนที่เหลือของรหัสของเรา spawn ฟังก์ชันรับสองพารามิเตอร์ -

  • ฟังก์ชันที่จะเกิดและ
  • วัตถุที่จะถูกส่งผ่านไปยังฟังก์ชันสร้าง

ในกรณีที่ไม่มีวัตถุที่จะส่งผ่านไปยังฟังก์ชัน spawned สามารถส่งผ่านค่า NULL ได้

ทั้งสองฟังก์ชั่น (foo and main)อาจไม่จำเป็นต้องทำงานในลำดับเดียวกันทุกครั้ง ไม่มีการรับประกันว่าจะเกิดขึ้นเมื่อใดfoo จะดำเนินการและเมื่อใด main()จะดำเนินการ ผลลัพธ์จะแตกต่างกันในแต่ละครั้งที่คุณเรียกใช้

เอาต์พุต 1

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

เอาต์พุต 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!!

จากผลลัพธ์เราสามารถสรุปได้ว่ารหัส Dart สามารถเกิดใหม่ได้ isolate จากการรันโค้ดเช่นวิธีที่โค้ด Java หรือ C # สามารถเริ่มเธรดใหม่ได้

Isolates แตกต่างจากเธรดที่ไฟล์ isolateมีหน่วยความจำของตัวเอง ไม่มีวิธีแชร์ตัวแปรระหว่างisolates- วิธีเดียวที่จะสื่อสารระหว่าง isolates ผ่านข้อความ

Note - เอาต์พุตข้างต้นจะแตกต่างกันไปตามการกำหนดค่าฮาร์ดแวร์และระบบปฏิบัติการที่แตกต่างกัน

แยก v / s ในอนาคต

การทำงานเชิงคำนวณที่ซับซ้อนแบบอะซิงโครนัสเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าการตอบสนองของแอปพลิเคชัน Dart Future เป็นกลไกในการดึงค่าของงานอะซิงโครนัสหลังจากเสร็จสิ้นในขณะที่ Dart Isolates เป็นเครื่องมือในการสร้างนามธรรมแบบคู่ขนานและนำไปใช้ในทางปฏิบัติระดับสูง