Lập trình đa tuyến (MULTITHREADING)
Kết thúc bài học SV có thể: Nêu được khái niệm Tuyến (Thread) và tiến trình (Process) Phân tích được những ưu điểm của lập trình đa tuyến Trình bày được các phương thức của lớp Threading Vận dụng cơ chế ...
Kết thúc bài học SV có thể:
- Nêu được khái niệm Tuyến (Thread) và tiến trình (Process)
- Phân tích được những ưu điểm của lập trình đa tuyến
- Trình bày được các phương thức của lớp Threading
- Vận dụng cơ chế đa tuyến, viết một số ứng dụng đơn giản.
Một số khái niệm
Đa nhiệm
– Mutitasking : Là khả năng của hệ điều hành làm nhiều công việc (ví dụ chạy nhiều ứng dụng) tại một thời điểm.
Tiến trình
– Process : Khi chạy một ứng dụng, hệ điều hành sẽ cấp phát riêng cho ứng dụng đó bộ nhớ và các tài nguyên khác. Bộ nhớ và tài nguyên vật lý riêng biệt này được gọi là một tiến trình. Các tài nguyên và bộ nhớ của một tiến trình thì chỉ tiến trình đó được phép truy cập.
Lưu ý Một ứng dụng thường có một tiến trình nhưng cũng có thể có nhiều tiến trình ! Tiến trình ≠ Ứng dụng
Tuyến (đoạn) – Thread :
Trong hệ thống, một tiến trình có thể có một hoặc nhiều chuỗi thực hiện tách biệt nhau và có thể chạy đồng thời. Mỗi chuỗi thực hiện này được gọi là một tuyến (Thread). Trong một ứng dụng, Thread khởi tạo đầu tiên gọi là Thread sơ cấp hay Thread chính. (Chính là phương thức Sub Main).
Một hình ảnh khác về mô hình đơn tuyến và đa tuyến:

Có 2 mô hình thread là Apartment Threading và Free Threading .


Trong mô hình thứ hai, do các thread có thể cùng chia sẻ và truy cập dữ liệu chung, do vậy có thể xảy ra xung đột (khiến kết quả không như mong muốn).
Ví dụ:

Kết quả không thể xác định được (không nhất quán) khi nhiều thread cùng truy cập
Ưu điểm và hạn chế của cơ chế đa tuyến
Ưu điểm:
Trong một ứng dụng có thể cho nhiều "công việc" (tuyến-thread) được thực thi đồng thời. Các công việc này hoạt động độc lập với nhau và đóng vai trò như những chương trình riêng biệt. Một thread có thể treo (Hang) mà không ảnh hưởng đến các thread khác. Đa tuyến đặc biệt hữu ích trong việc xây dựng các ứng dụng Server – cái mà đáp ứng nhiều yêu cầu từ các Client.
Hạn chế:
Việc cài đặt chương trình theo kiểu đa tuyến phức tạp hơn. Đồng thời phải giải quyết vấn đề xung đột tài nguyên dùng chung. Việc cài đặt đa tuyến cũng sẽ tốn bộ nhớ hơn vì hệ thống phải lưu lại những thông tin về mỗi thread. Hơn nữa Processor phải mất nhiều thời gian hơn cho việc luân chuyển (switching) giữa các tuyến với nhau. Một vấn đề khác nữa là tình huống khóa chết – deadlock !

Đa tuyến trong .NET
MS.NET Framework cung cấp cho nhà phát triển cơ chế đa tuyến theo mô hình Free Threading. Việc tạo và quản lý tuyến được thực hiện thông qua lớp Thread, thuộc namespace là System.Threading.
Mô tả về lớp Thread:
Một số phương thức thường dùng
Một số thuộc tính public thường dùng:

Tạo một Thread trong VB.NET
Cú pháp tạo một tuyến trong VB.NET

ở trên là một ví dụ về : Một tiến trình có một Thread.
- Phân tích ví dụ trên:
- Một số câu hỏi:
Cho biết trình tự hiển thị các thông báo khi chạy chương trình sau đây:

Ví dụ 2: Tạo nhiều thread trong một tiến trình
Trong một chương trình (tiến trình) có thể tạo nhiều Thread, ví dụ:
Câu hỏi: Cho biết thứ tự thông báo sau đây ?

Một ví dụ
- 1 Các nguyên tắc xác định thành phần các khối tài sản nợ
- 2 Ngăn xếp (STACK)
- 3 Lưu tốc cho phép không lắng và không xói của kênh, câu hỏi lý thuyết và bài tập dòng chảy ổn định đều không áp
- 4 Các loại nhà máy bơm
- 5 Nghiên cứu làng Việt: Các vấn đề và triển vọng
- 6 Bản quyền và luật pháp
- 7 Tài chính, tín dụng, ngân hàng và lưu thông tiền tệ trong thời kỳ quá độ lên chủ nghĩa xã hội ở Việt Nam
- 8 Vi sinh vật với quá trình xử lý ô nhiễm môi trường nước
- 9 Đoàn cán bộ Viện Kinh tế học và Viện Xã hội học đi thăm và trao đổi khoa học tại Viện Hàn lâm Khoa học tỉnh Quảng Châu Trung Quốc
- 10 Di động xã hội của cộng đồng khoa học và công nghệ Quảng Ngãi trong thời kỳ đổi mới