
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 9 : Lập trình song song bằng VC#
Slide 1
9.0 Dẫn nhập
9.1 Tổng quát về lập trình song song
9.2 Lập trình multi-process bằng class Process
9.3 Lập trình multi-thread bằng class Thread
9.4 Demo tính hiệu quả của multi-thread
9.5 Demo vấn ₫ề tương tranh giữa các thread ₫ồng thời
9.6 Demo việc giải quyết tương tranh giữa các thread
9.7 Kết chương
Chương 9
Lập trình song song bằng C#

Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 9 : Lập trình song song bằng VC#
Slide 2
9.0 Dẫn nhập
Chương này giới thiệu các ₫ối tượng phục vụ ghi/₫ọc dữ liệu
ra/vào file cùng các tác vụ ghi/₫ọc dữ liệu cổ ₫iển ra/vào file.
Chương này cũng giới thiệu các ₫ối tượng phục vụ ghi/₫ọc hệ
thống ₫ối tượng ra/vào file cùng các tác vụ ghi/₫ọc hệ thống ₫ối
tượng có mối quan hệ tham khảo phức tạp ra/vào file.

Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 9 : Lập trình song song bằng VC#
Slide 3
9.1 Tổng quát về lập trình song song
Thường ₫ể giải quyết bài toán nào ₫ó, ta thường dùng giải thuật
tuần tự nhờ tính dễ hiểu, dễ kiểm soát của nó. Chương trình dùng
thuật giải tuần tự khi chạy trở thành process mono-thread hay
process tuần tự.
Process tuần tự hoạt ₫ộng không hiệu quả vì không lợi dụng triệt
₫ể ₫ược các CPU xử lý trên máy tính vật lý. Lưu ý rằng hiện nay các
máy PC, smartphone hay tablet ₫ều dùng CPU ₫a nhân. Thí dụ
galaxy S4 ở thị trường Việt Nam có 8 nhân.
Để máy giải quyết bài toán hiệu quả hơn, ta nên dùng thuật toán
song song bằng cách nhận dạng các hoạt ₫ộng có thể thực hiện
₫ồng thời rồi nhờ nhiều CPU thực hiện chúng ₫ồng thời.
Một trong các phương pháp hiện thực thuật toán song song là lập
trình multi-process và multi-thread.

Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 9 : Lập trình song song bằng VC#
Slide 4
9.2 Lập trình multi-process bằng class Process
Môi trường .Net cung cấp class tên là Process ₫ể giúp ta lập trình
multi-process dễ dàng.
Class Process thuộc namespace System.Diagnostics, nó chứa các
thuộc tính và tác vụ giúp ta quản lý process dễ dàng, thuận lợi.
Thí dụ thuộc tính StartInfo là 1 ₫ối tượng gồm nhiều thuộc tính xác
₫ịnh thông tin ₫ể kích hoạt ứng dụng xác ₫ịnh :
Process myProcess = new Process();
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = txtPath.Text;
myProcess.StartInfo.CreateNoWindow = true;
….

Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lập trình hướng ₫ối tượng
Chương 9 : Lập trình song song bằng VC#
Slide 5
9.2 Lập trình multi-process bằng class Process
Sau khi thiết lập ₫ầy ₫ủ các thông tin ₫ể khởi tạo process, ta có thể
gọi tác vụ Start ₫ể kích hoạt nó chạy :
myProcess.Start();
Sau khi ₫ược kích hoạt, process sẽ chạy song hành và ₫ộc lập với
process kích hoạt nó cho ₫ến khi kết thúc theo thuật giải của nó.
Tuy nhiên, từ bên ngoài ta có thể giết process nhờ tác vụ Kill :
myProcess.Kill();