Lập trình Dart - Đồng tiền
Concurrencylà việc thực hiện một số chuỗi lệnh cùng một lúc. Nó liên quan đến việc thực hiện nhiều hơn một nhiệm vụ đồng thời.
Sử dụng phi tiêu Isolatesnhư một công cụ để thực hiện các công việc song song. Cácdart:isolate gói là giải pháp của Dart để lấy mã Dart đơn luồng và cho phép ứng dụng sử dụng nhiều hơn các phần cứng có sẵn.
Isolates, như tên cho thấy, là các đơn vị mã đang chạy biệt lập. Cách duy nhất để gửi dữ liệu giữa chúng là chuyển các thông điệp, giống như cách bạn chuyển các thông điệp giữa máy khách và máy chủ. Anisolate giúp chương trình tận dụng lợi thế của bộ vi xử lý đa lõi.
Thí dụ
Hãy lấy một ví dụ để hiểu rõ hơn về khái niệm này.
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');
}
Đây, spawn phương pháp của Isolate lớp tạo điều kiện cho việc chạy một chức năng, foo, song song với phần còn lại của mã của chúng tôi. Cácspawn hàm nhận hai tham số -
- chức năng được sinh ra, và
- một đối tượng sẽ được chuyển đến hàm được tạo.
Trong trường hợp không có đối tượng nào để truyền cho hàm đã tạo, nó có thể được chuyển một giá trị NULL.
Hai chức năng (foo and main)có thể không nhất thiết phải chạy theo cùng một thứ tự mỗi lần. Không có gì đảm bảo khi nàofoo sẽ được thực thi và khi nào main()sẽ được thực thi. Đầu ra sẽ khác nhau mỗi khi bạn chạy.
Đầu ra 1
execution from main1
execution from main2
execution from main3
execution from foo ... the message is :Hello!!
Đầu ra 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!!
Từ kết quả đầu ra, chúng ta có thể kết luận rằng mã Dart có thể tạo ra một isolate từ việc chạy mã như cách mã Java hoặc C # có thể bắt đầu một chuỗi mới.
Isolates khác với chủ đề ở chỗ isolatecó bộ nhớ riêng của nó. Không có cách nào để chia sẻ một biến giữaisolates—Cách duy nhất để giao tiếp giữa isolates là thông qua tin nhắn chuyển.
Note - Kết quả đầu ra trên sẽ khác nhau đối với các cấu hình phần cứng và hệ điều hành khác nhau.
Cô lập v / s Tương lai
Thực hiện công việc tính toán phức tạp không đồng bộ là điều quan trọng để đảm bảo khả năng đáp ứng của các ứng dụng. Dart Future là một cơ chế để truy xuất giá trị của một tác vụ không đồng bộ sau khi nó đã hoàn thành, trong khi Dart Isolates là một công cụ để trừu tượng hóa song song và thực hiện nó trên cơ sở thực tế cấp cao.