Originally posted by 09520535
View Post
Announcement
Collapse
No announcement yet.
[Help] Xin định hướng làm bài tập về multithread HĐH
Collapse
X
-
Originally posted by 10520401 View PostAnh chị cho em xin định hướng làm bài tập hệ điều hành này với nhóm em có 4 người mà chết cứng hết chẳng ai biết phải làm gì cả,mà học HĐH thì cũng ko hiểu về mấy cái code trong thread cho lắm,mong anh chị chỉ giúp (định hướng thôi)
Viết chương trình multithread trong bài toán nhân ma trận. Đọc vào 2 ma trận A & B, sau đó dùng nhiều thread này để thực hiện việc nhân ma trận. Ghi ma trận kết quả ra file.
em đã làm đc nhập ma trận vào file txt, lấy 2 ma trận đó ra và nhân với nhau,ghi kết quả vào file txt. Nhưng còn phần multithread thì ko biết làm sao cả...
Mong các anh chị giúp đỡ, many thanksCHÚ NÀO HOK LIKE ANH COI CHỪNG BÀN THỜ NHÀ CHÚ LẤY HÌNH CHÚ LÀM AVATAR ĐÓ NHE !!!
Comment
-
Originally posted by 11520160 View PostAnh ui anh làm đc thì anh share code cho em với nhé, phần này em cũng đang bíÁo rách vai vì lòng tri kỷ
Quần thủng đích vì ý chí kiên cường
Vành mũ cối che đời trai trẻ
Dép cao su dẫm nát mối tình đầu..
Comment
-
Originally posted by 09520535 View PostHồi trước cũng thực hành HDH về multithread(cũng C++ lun) nhưng khác đề 1 chút , nhưng chắc có thể tham khảo đc :
Cho người dùng nhập vào 2 số nguyên dương a và b, sau đó dùng n thread để tìm kiếm các số nguyên tố nằm trong khoảng 2 số đã nhập. Mỗi lần tìm được một số thì sẽ tăng biến chung number (khởi động là 0) lên 1.
//
Mình chia đoạn a-> b ra 3 đoạn :
thread1 : từ a đến a+n (với n = (b-a)/3)
thread3 : từ b-n đến b
thread2 : đoạn giữa : từ a+n đến b-n
Link Down :http://www.mediafire.com/?d6jblm283mr7ul8
Điểm cao nhất lớp đó , 8 điểm hehe
Còn bài bạn , mình nghĩ chắc mỗi hàng hoặc mỗi cột kết quả thì lấy 1 thread ra để tính ... Ko biết đúng ko ^^
Comment
-
luôn tiện cho em hỏi luôn là làm sao để tạo ra 2 tiến trình p0 đọc ma trận vuông, p1 nghịch đảo ma trận đó và ghi vào một file khác nhưng cơ chế liên lạc ở đây là dùng cơ chế pipe. mong anh chị nào có hưởng giải chỉ dùm. em chỉ biết tạo ra 2 tiến trình thôi. không biết liên lạc bằng cơ chế pipe như thế nào?:love:Tương lai khóc hay cười phụ thuộc vào độ lười của quá khứ.:cry:
Comment
-
giúp mình hiểu code này với
Code:// Matrix.cpp : Defines the entry point for the console application. // #include<iostream> #include <stdio.h> #include <conio.h> #include <cstdlib> #include <ctime> #include<windows.h> using namespace std; int nGlobalCount = 0; int thread_index = 0; int num_of_thr=9; int a[3][3] , b[3][3] , c[3][3]; int i , j , k; struct v { int i; /*row*/ int j; /*column*/ }; DWORD ThreadProc (LPVOID lpdwThreadParam ) { struct v *input = (struct v *)lpdwThreadParam ; int avg=4*4/9; for(int n=0; n<avg; n++) { int sum=0; for ( k = 0 ; k < 3; k++) { sum=sum+((a[input->i][k])*(b[k][input->j])); c[input->i][input->j]=sum; if(j<3 && avg!=1) j=j+1; else if (j==3 && avg!=1 && (avg-n)!=1) i=i+1; } } cout<<"the number of the thread "<<thread_index<<endl; return 0; } int main(int argc, CHAR* argv[]) { int i; DWORD ThreadIds[9]; HANDLE ThreadHandles[9]; struct v data[9]; srand(time(0)); for ( int i = 0 ; i < 3; i++) { for (int j = 0 ; j < 3 ; j++) { a[i][j] = 10+rand() % 10; b[i][j] = 10+rand() % 10; c[i][j] = 0; } } for ( int i=0 ; i < 3; i++) { for(int j=0 ; j <3; j++) { data[thread_index].i = i; data[thread_index].j = j; ThreadHandles[thread_index] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&ThreadProc, &data[thread_index], 0,&ThreadIds[thread_index]); thread_index++; } } WaitForMultipleObjects(num_of_thr, ThreadHandles, TRUE, INFINITE); cout<<"The matrix A is "<<endl; for ( i = 0 ; i < 3; i++) { for ( j = 0 ; j < 3 ; j++) cout<<a[i][j]<<" "; cout<<endl; } cout<<"The matrix B is "<<endl; for ( i = 0 ; i < 3; i++) { for ( j = 0 ; j < 3 ; j++) cout<<b[i][j]<<" "; cout<<endl; } cout<<"The resultant matrix is "<<endl; for ( i = 0 ; i < 3; i++) { for ( j = 0 ; j < 3 ; j++) cout<<c[i][j]<<" "; cout<<endl; } for (int i=0; i<9; i++) CloseHandle(ThreadHandles[i]); system("pause"); getch(); return 0; }
Comment
Comment