Chương 9<br />
<br />
Lập trình song song bằng C#<br />
9.0 Dẫn nhập<br />
9.1 Tổng quát về lập trình song song<br />
9.2 Lập trình multi-process bằng class Process<br />
9.3 Lập trình multi-thread bằng class Thread<br />
9.4 Demo tính hiệu quả của multi-thread<br />
9.5 Demo vấn ₫ề tương tranh giữa các thread ₫ồng thời<br />
9.6 Demo việc giải quyết tương tranh giữa các thread<br />
9.7 Kết chương<br />
<br />
Khoa Khoa học & Kỹ thuật Máy tính<br />
Trường ĐH Bách Khoa Tp.HCM<br />
© 2010<br />
<br />
Môn : Lập trình hướng ₫ối tượng<br />
Chương 9 : Lập trình song song bằng VC#<br />
Slide 1<br />
<br />
9.0 Dẫn nhập<br />
<br />
<br />
<br />
Chương này giới thiệu các ₫ối tượng phục vụ ghi/₫ọc dữ liệu<br />
ra/vào file cùng các tác vụ ghi/₫ọc dữ liệu cổ ₫iển ra/vào file.<br />
Chương này cũng giới thiệu các ₫ối tượng phục vụ ghi/₫ọc hệ<br />
thống ₫ối tượng ra/vào file cùng các tác vụ ghi/₫ọc hệ thống ₫ối<br />
tượng có mối quan hệ tham khảo phức tạp ra/vào file.<br />
<br />
Khoa Khoa học & Kỹ thuật Máy tính<br />
Trường ĐH Bách Khoa Tp.HCM<br />
© 2010<br />
<br />
Môn : Lập trình hướng ₫ối tượng<br />
Chương 9 : Lập trình song song bằng VC#<br />
Slide 2<br />
<br />
9.1 Tổng quát về lập trình song song<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Thường ₫ể giải quyết bài toán nào ₫ó, ta thường dùng giải thuật<br />
tuần tự nhờ tính dễ hiểu, dễ kiểm soát của nó. Chương trình dùng<br />
thuật giải tuần tự khi chạy trở thành process mono-thread hay<br />
process tuần tự.<br />
Process tuần tự hoạt ₫ộng không hiệu quả vì không lợi dụng triệt<br />
₫ể ₫ược các CPU xử lý trên máy tính vật lý. Lưu ý rằng hiện nay các<br />
máy PC, smartphone hay tablet ₫ều dùng CPU ₫a nhân. Thí dụ<br />
galaxy S4 ở thị trường Việt Nam có 8 nhân.<br />
Để máy giải quyết bài toán hiệu quả hơn, ta nên dùng thuật toán<br />
song song bằng cách nhận dạng các hoạt ₫ộng có thể thực hiện<br />
₫ồng thời rồi nhờ nhiều CPU thực hiện chúng ₫ồng thời.<br />
Một trong các phương pháp hiện thực thuật toán song song là lập<br />
trình multi-process và multi-thread.<br />
Khoa Khoa học & Kỹ thuật Máy tính<br />
Trường ĐH Bách Khoa Tp.HCM<br />
© 2010<br />
<br />
Môn : Lập trình hướng ₫ối tượng<br />
Chương 9 : Lập trình song song bằng VC#<br />
Slide 3<br />
<br />
9.2 Lập trình multi-process bằng class Process<br />
<br />
<br />
<br />
<br />
Môi trường .Net cung cấp class tên là Process ₫ể giúp ta lập trình<br />
multi-process dễ dàng.<br />
Class Process thuộc namespace System.Diagnostics, nó chứa các<br />
thuộc tính và tác vụ giúp ta quản lý process dễ dàng, thuận lợi.<br />
Thí dụ thuộc tính StartInfo là 1 ₫ối tượng gồm nhiều thuộc tính xác<br />
₫ịnh thông tin ₫ể kích hoạt ứng dụng xác ₫ịnh :<br />
Process myProcess = new Process();<br />
myProcess.StartInfo.UseShellExecute = false;<br />
myProcess.StartInfo.FileName = txtPath.Text;<br />
myProcess.StartInfo.CreateNoWindow = true;<br />
….<br />
<br />
Khoa Khoa học & Kỹ thuật Máy tính<br />
Trường ĐH Bách Khoa Tp.HCM<br />
© 2010<br />
<br />
Môn : Lập trình hướng ₫ối tượng<br />
Chương 9 : Lập trình song song bằng VC#<br />
Slide 4<br />
<br />
9.2 Lập trình multi-process bằng class Process<br />
<br />
<br />
<br />
<br />
Sau khi thiết lập ₫ầy ₫ủ các thông tin ₫ể khởi tạo process, ta có thể<br />
gọi tác vụ Start ₫ể kích hoạt nó chạy :<br />
myProcess.Start();<br />
Sau khi ₫ược kích hoạt, process sẽ chạy song hành và ₫ộc lập với<br />
process kích hoạt nó cho ₫ến khi kết thúc theo thuật giải của nó.<br />
Tuy nhiên, từ bên ngoài ta có thể giết process nhờ tác vụ Kill :<br />
myProcess.Kill();<br />
<br />
Khoa Khoa học & Kỹ thuật Máy tính<br />
Trường ĐH Bách Khoa Tp.HCM<br />
© 2010<br />
<br />
Môn : Lập trình hướng ₫ối tượng<br />
Chương 9 : Lập trình song song bằng VC#<br />
Slide 5<br />
<br />