Bài giảng môn Lập trình hướng đối tượng: Chương 9 - TS. Nguyễn Văn Hiệp

pdf
Số trang Bài giảng môn Lập trình hướng đối tượng: Chương 9 - TS. Nguyễn Văn Hiệp 28 Cỡ tệp Bài giảng môn Lập trình hướng đối tượng: Chương 9 - TS. Nguyễn Văn Hiệp 544 KB Lượt tải Bài giảng môn Lập trình hướng đối tượng: Chương 9 - TS. Nguyễn Văn Hiệp 0 Lượt đọc Bài giảng môn Lập trình hướng đối tượng: Chương 9 - TS. Nguyễn Văn Hiệp 12
Đánh giá Bài giảng môn Lập trình hướng đối tượng: Chương 9 - TS. Nguyễn Văn Hiệp
4.7 ( 9 lượt)
Nhấn vào bên dưới để tải tài liệu
Đang xem trước 10 trên tổng 28 trang, để tải xuống xem đầy đủ hãy nhấn vào bên trên
Chủ đề liên quan

Nội dung

Chương 9 Lập trình song song bằng C# 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 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   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 2 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 3 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 4 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(); 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  Ta hãy thử viết 1 ứng dụng quản lý process ₫ơn giản có form giao diện như sau : 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 6 9.3 Lập trình multi-threads bằng class Thread     Môi trường .Net cung cấp class tên là Thread ₫ể giúp ta lập trình multi-thread dễ dàng. Class Thread thuộc namespace System.Threading, nó chứa các thuộc tính và tác vụ giúp ta quản lý thread dễ dàng, thuận lợi. Thường mỗi thread sẽ chạy ₫oạn code ₫ược miêu tả trong 1 hàm chức năng xác ₫ịnh. Thí dụ khi process ₫ược kích hoạt, HĐH sẽ tạo tường minh thread ban ₫ấu cho process ₫ó, thread chính này sẽ chạy ₫oạn code của hàm Main của class ứng dụng. Để tạo thread mới, ta có thể dùng lệnh : Thread t = new Thread (new ParameterizedThreadStart(tenhamcanchay)); 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 7 9.3 Lập trình multi-threads bằng class Thread   Để kích hoạt chạy thread, ta có thể gọi tác vụ Start : t.Start (new Params(danhsachthamso)); với Params là class ₫ối tượng chứa các thông số mà ta muốn truyền/nhận cho thread mới. Lưu ý tác vụ mà thread sẽ chạy phải ₫ược ₫ặc tả với tham số hình thức là kiểu object : void TinhTich (object obj) { //tác vụ mà thread sẽ chạy Params p = (Params)obj; //ép kiểu tham số về kiểu mong muốn ... } 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 8 9.3 Lập trình multi-threads bằng class Thread     Để tạm dừng thread, ta có thể gọi tác vụ Suspend : t.Suspend(); Để chạy tiếp thread, ta có thể gọi tác vụ Resume : t.Resume(); Để dừng và xóa thread, ta có thể gọi tác vụ Abort : t.Abort(); Để thay ₫ổi quyền ưu tiên thread, ta thực hiện lệnh gán : t.Priority = ThreadPriority.Normal; 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 9 9.3 Lập trình multi-threads bằng class Thread   Trên Windows, mỗi process có thể ở 1 trong 6 cấp quyền ưu tiên sau ₫ây : IDLE_PRIORITY_CLASS BELOW_NORMAL_PRIORITY_CLASS NORMAL_PRIORITY_CLASS ABOVE_NORMAL_PRIORITY_CLASS HIGH_PRIORITY_CLASS REALTIME_PRIORITY_CLASS Cấp quyền ưu tiên của process sẽ quyết ₫ịnh các thread trong process ₫ó chạy theo quyền ưu tiên như thế nào. 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 10
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.