Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
0,91 MB
Nội dung
ĐỒ ÁN MÔN HỌC Company LOGO ĐỒ ÁN NGUYÊN LÝ HỆ ĐIỀU HÀNH Đề tài: ỨNG DỤNG MUTILTHREAD ĐỂ NHÂN HAI MA TRẬN Giáo viên hướng dẫn: Ths Trần Hồ Thủy Tiên Sinh viên thực hiên: Vũ Đức Nội Nội dung trình bày Cơ sở lý thuyết Thiết kế xây dựng chương trình Kết luận Cơ sở lý thuyết Khái niệm thread Khái niệm multi thread Ưu nhược điểm multi thread Cơ sở lý thuyết Khái niệm thread Thread luồng chạy process Nó dịng điều khiển process Nó sử dụng để thực công việc cho process Cơ sở lý thuyết Giống process thread có nhiều trạng thái như: Running Blocked Ready Terminated Cơ sở lý thuyết Sơ đồ trạng thái thread Cơ sở lý thuyết Khái niệm multi-thread Multi thread process tách thành nhiều luồng khác để thực nhiệm vụ khác lúc VD: Khi ta nghe nhạc youtube trình ứng dụng phân thành nhiều luồng Một luồng thực thi công việc load nhạc internet, luồng thực thi công việc phát nhạc Cơ sở lý thuyết Các thread process chia sẻ chung vùng tài nguyên Tuy nhiên thread có stack riêng dùng để: Truyền tham số cho hàm Để chứa biến nội Để lưu trữ giá trị trả hàm Cơ sở lý thuyết Cơ sở lý thuyết Ưu nhược điểm Multi thread Ưu điểm Giúp ct chạy nhanh Cần thiết số trình Khuyết điểm Khó viết Khó kiểm sốt lỗi Dữ liệu bị xung đột ứng dụng Thiết kế xây dựng chương trình Mơi trường triển khai Phân tích yêu cầu Tổ chức sở liệu Xây dựng hàm chức Thiết kế xây dựng chương trình Mơi trường triển khai Lập trình hệ điều hành Ubuntu Sử dụng ngơn ngữ lập trình C Viết QT Creater Thiết kế xây dựng chương trình Phân tích u cầu • Thuật tốn nhân hai ma trận Phép nhân hai ma trận thực số cột ma trận bên trái số dòng ma trận bên phải • Nếu ma trân A có kích thước m x n ma trận B có kích thước n x p, ma trận tích AB có kích thước m x p có phần tử đứng hàng i, cột thứ j xác định bởi: C[i][j] = A[i][1] * B[1][j] + … + A[i][n] * B[n][j] Thiết kế xây dựng chương trình Để thực phép nhân hai ma trận multi thread ta tiến hành tạo n thread thread có nhiệm vụ nhân giá trị thuộc hàng thứ i đến hàng thứ j ma trận bên trái Thiết kế xây dựng chương trình Ví dụ: Ta muốn nhân ma trận A B với kích thước ma trận 100x100 với thread chạy thì: Thread 1: Nhân hàng đến hàng 20 mt A cho cột mt B Thread 2: Nhân hàng 20 đến hàng 40 mt A cho cột mt B Thread 3: Nhân hàng 40 đến hàng 60 mt A cho cột mt B Thread 4: Nhân hàng 60 đến hàng 80 mt A cho cột mt B Thread 5: Nhân hàng 80 đến hàng 100 mt A cho cột mt B Thiết kế xây dựng chương trình Tổ chức sở liệu Mỗi ma trận có dạng: struct matrix { char link[50]; // đường link chứa file int n; // số hàng int m; // số cột int **A; }; Ngồi cịn biến khác để phục vụ chương trình Thiết kế xây dựng chương trình Xây dựng hàm chức void *readFile(void *arg) Dùng để thực việc đọc file ma trận void *multi(void *arg) Dùng để thực phép nhân hai ma trận Kết luận Những kết đạt Nắm rõ thread Biết cách tạo chạy chương trình multi thread Những thiếu sót Chương trình chưa có giao diện Thank you!!! Company LOGO