Ưu và nhược điểm của multi thread Khái niệm về multi thread Khái niệm về thread... Khái niệm về thread Thread là luồng chạy trong một process.. Nó được sử dụng để thực hiện các công
Trang 1LOGO
Trang 2Giá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
Trang 3Kết luận
Thiết kế và xây dựng chương trình
Cơ sở lý thuyết
Trang 4Ưu và nhược điểm của multi thread
Khái niệm về multi thread
Khái niệm về thread
Trang 5Khái niệm về thread
Thread là luồng chạy trong một process.
Nó là dòng các điều khiển trong một process.
Nó được sử dụng để thực hiện các công việc cho process.
Trang 6Blocked
Ready
Terminated
Giống như process mỗi thread đều có nhiều trạng thái như:
Trang 7 Sơ đồ trạng thái của thread
Trang 8Khái niệm multi-thread
Multi thread là một process tách ra thành một hoặc nhiều luồng khác nhau để cùng thực hiện các nhiệm vụ khác nhau cùng một lúc
VD: Khi ta nghe nhạc trên youtube thì trình ứng dụng sẽ phân ra thành nhiều luồng Một luồng thực thi công việc load nhạc trên
internet, một luồng thực thi công việc phát nhạc
Trang 9 Các thread trong một process sẽ chia sẻ chung vùng tài nguyên Tuy nhiên mỗi thread đều có một stack của riêng nó dùng để:
Truyền tham số cho hàm
Để chứa các biến nội bộ
Để lưu trữ giá trị trả về của hàm
Trang 11 Ưu điểm
Giúp ct chạy nhanh
Cần thiết trong một số trình ứng dụng
Khuyết điểm
Khó viết
Khó kiểm soát lỗi
Dữ liệu có thể bị xung đột
Multi thread
Ưu và nhược điểm
Trang 12Tổ chức cơ sở dữ liệu
Phân tích yêu cầu
Môi trường triển khai
Xây dựng các hàm chức năng
Trang 13 Môi trường triển khai
Lập trình trên hệ điều hành Ubuntu
Sử dụng ngôn ngữ lập trình C
Viết trên QT Creater
Trang 14 Phân tích yêu cầu
Thuật toán nhân hai ma trận
• Phép nhân hai ma trận chỉ thực hiện được khi số cột của ma trận bên trái bằng số
dòng của ma trận bên phải
• Nếu ma trân A có kích thước m x n và ma trận B có kích thước n x p, thì 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]
Trang 15 Để thực hiện phép nhân hai ma trận bằng multi thread ta tiến hành tạo n thread mỗi thread có nhiệm vụ nhân các giá trị thuộc hàng thứ i đến hàng thứ j của ma trận bên trái
Trang 16 Ví dụ: Ta muốn nhân 2 ma trận A và B với kích thước mỗi ma trận là 100x100 với 5
thread chạy trong đó thì:
Thread 1: Nhân hàng 0 đến hàng 20 của mt A cho các cột của mt B
Thread 2: Nhân hàng 20 đến hàng 40 của mt A cho các cột của mt B
Thread 3: Nhân hàng 40 đến hàng 60 của mt A cho các cột của mt B
Thread 4: Nhân hàng 60 đến hàng 80 của mt A cho các cột của mt B
Thread 5: Nhân hàng 80 đến hàng 100 của mt A cho các cột của mt B
Trang 17 Tổ chức cơ sở dữ liệu
Mỗi ma trận đều 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;
};
Ngoài ra còn các biến khác để phục vụ chương trình
Trang 18 Xây dựng các hàm chức năng
void *readFile(void *arg)
Dùng để thực hiện việc đọc file ma trận
void *multi(void *arg)
Dùng để thực hiện phép nhân hai ma trận
Trang 19 Những kết quả đạt được
Nắm rõ về thread
Biết cách tạo và chạy một chương trình về multi thread
Những thiếu sót
Chương trình chưa có giao diện
Trang 20LOGO