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 เป็นเครื่องมือในการสร้างนามธรรมแบบคู่ขนานและนำไปใช้ในทางปฏิบัติระดับสูง