← Back to list

Flutter có phải là framework đơn luồng?

Flutter có phải là framework đơn luồng. Nếu bạn đang tìm kiếm câu trả lời này thì đây là câu trả lời giành cho bạn flutter không phải là…

codelife · 2024-01-05 03:36 · 0 claps · 3.6 min read
#flutter #flutter-cơ-bản #flutter-future #mr555
Open on Medium ↗
Wiki topics: 📱 · Mobile Development

Flutter có phải là framework đơn luồng?

Flutter có phải là framework đơn luồng. Nếu bạn đang tìm kiếm câu trả lời này thì đây là câu trả lời giành cho bạn flutter không phải là một ngôn ngữ đơn luồng.

I. Flutter không phải là ngôn ngữ mà là Framework

Flutter không phải là ngôn ngữ mà là một framework được phát triển bởi Google để xây dựng ứng dụng di động đa nền tảng (Android và iOS) và cả web. Flutter được viết bằng ngôn ngữ Dart, tuy nhiên Dart lại là một ngôn ngữ đa luồng (multi-threaded) và hỗ trợ cả lập trình đồng bộ (synchronous) và bất đồng bộ (asynchronous).

II. Tại sao Flutter không hẳn là Framework đơn luồng

Trong Flutter, các widget được xây dựng trên một cấu trúc cây (tree structure), trong đó các widget được xếp chồng lên nhau. Khi có sự kiện xảy ra, như người dùng chạm vào một nút, Flutter sẽ gửi một thông điệp (message) đến widget tương ứng để xử lý sự kiện đó. Quá trình này diễn ra trên một luồng đơn (single thread), nhưng các widget có thể tương tác với các tiến trình bất đồng bộ (asynchronous) hoặc đa luồng (isolate) để xử lý các tác vụ phức tạp.

Do đó, Flutter không hoàn toàn đơn luồng, nhưng nó sử dụng một cơ chế đơn luồng để quản lý và xử lý sự kiện trên giao diện người dùng.

Bạn có thể tìm hiểu thêm tại đây:

Tìm hiểu về Event loop trong Flutter | by mr555 | Dec, 2023 | Medium

Microtask queue và Event queue trong Flutter | by mr555 | Dec, 2023 | Medium

Giả sử như:

Giả sử bạn đang viết một ứng dụng Flutter có tính năng tải xuống một hình ảnh từ internet và hiển thị nó trên màn hình. Để tải xuống hình ảnh, bạn cần gửi một yêu cầu HTTP đến server và đợi phản hồi từ server. Khi đợi phản hồi từ server, nếu bạn thực hiện trên cùng một luồng với giao diện người dùng (UI thread), thì ứng dụng sẽ bị đóng băng trong khi đợi phản hồi từ server. Do đó, bạn cần phải thực hiện yêu cầu HTTP trên một luồng khác để đảm bảo rằng giao diện người dùng vẫn được phản hồi và hoạt động tốt.

Chính vì cơ chế bất đồng bộ và đa luồng cho phép bạn thực hiện các tác vụ bất đồng bộ trên các luồng khác nhau, mà không làm ảnh hưởng đến luồng chính của giao diện người dùng.

III. Cơ chế bất đồng bộ của Flutter chạy trên luồng chính

Cơ chế bất đồng bộ không chạy trên một luồng riêng biệt, mà thực hiện trên một luồng chính (main thread) nhưng không chặn luồng đó trong quá trình thực hiện. Khi một tác vụ bất đồng bộ được kích hoạt, chương trình sẽ tiếp tục chạy các tác vụ khác trên luồng chính, trong khi tác vụ bất đồng bộ được thực hiện trên một làn khác, ví dụ như một luồng của hệ điều hành hoặc một worker thread. Khi tác vụ bất đồng bộ hoàn tất, kết quả sẽ được trả về và xử lý trên luồng chính.

Ví dụ:

Trong Flutter, cơ chế bất đồng bộ thông qua async/await được sử dụng để thực hiện các tác vụ I/O như tải dữ liệu từ internet, lưu trữ dữ liệu xuống đĩa hoặc xử lý ảnh. Khi thực hiện các tác vụ này, Flutter sẽ sử dụng một luồng chính để tiếp tục xử lý các tác vụ khác và không chặn luồng chính trong quá trình thực hiện. Khi tác vụ bất đồng bộ hoàn tất, Flutter sẽ thông báo cho luồng chính và cho phép tiếp tục xử lý các tác vụ tiếp theo.

Ví dụ trong trường hợp chuyển làn xe:

Giả sử bạn đang lái xe trên một con đường đông đúc và bạn cần di chuyển từ làn xe bên trái sang làn xe bên phải. Nếu bạn chuyển làn một cách đồng bộ (synchronous), bạn sẽ phải dừng lại và chờ cho các xe phía sau bạn đi qua trước khi có thể chuyển làn. Trong thời gian này, các xe phía sau bạn cũng sẽ phải dừng lại và chờ đợi bạn chuyển làn xong mới có thể tiếp tục đi. Điều này sẽ làm tắc nghẽn giao thông và giảm hiệu suất di chuyển.

Tuy nhiên, nếu bạn chuyển làn một cách bất đồng bộ (asynchronous), bạn có thể tiếp tục lái xe trên làn xe bên trái trong khi đang chuyển làn. Trong khi bạn đang chuyển làn, các xe phía sau bạn có thể vượt qua bạn và tiếp tục di chuyển trên làn xe bên phải. Khi bạn hoàn tất việc chuyển làn, bạn sẽ tiếp tục lái xe trên làn xe bên phải mà không cần phải dừng lại và chờ đợi các xe khác.

Bài viết trước

Microtask queue và Event queue trong Flutter | by mr555 | Dec, 2023 | Medium

Tìm hiểu về Event loop trong Flutter | by mr555 | Dec, 2023 | Medium

Bài viết tiếp theo:

Tìm hiểu máy ảo Dart. Máy ảo Dart là một công cụ giúp chương… | by cometech | Jan, 2024 | Medium


메타데이터
post_id
60ab14fa89d7
slug
flutter-có-phải-là-framework-đơn-luồng-60ab14fa89d7
url
https://medium.com/@cuongdinh008/flutter-c%C3%B3-ph%E1%BA%A3i-l%C3%A0-framework-%C4%91%C6%A1n-lu%E1%BB%93ng-60ab14fa89d7
canonical_url
https://medium.com/@cuongdinh008/flutter-c%C3%B3-ph%E1%BA%A3i-l%C3%A0-framework-%C4%91%C6%A1n-lu%E1%BB%93ng-60ab14fa89d7
author_url
https://medium.com/@cuongdinh008
status
ok
fetched_at
2026-06-26 21:52:29