Announcement

Collapse
No announcement yet.

[Help] Xin định hướng làm bài tập về multithread HĐH

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Originally posted by 09520535 View Post
    Hồ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 ^^
    bạn có thể post lại code cho mình tham khảo được ko ? h mình đang làm bài này mà chưa hiểu phải làm ntn hix

    Comment


    • #17
      Originally posted by 10520401 View Post
      Anh 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 thanks
      Anh ui anh làm đc thì anh share code cho em với nhé, phần này em cũng đang bí
      CHÚ NÀO HOK LIKE ANH COI CHỪNG BÀN THỜ NHÀ CHÚ LẤY HÌNH CHÚ LÀM AVATAR ĐÓ NHE !!!

      Comment


      • #18
        Originally posted by 11520160 View Post
        Anh ui anh làm đc thì anh share code cho em với nhé, phần này em cũng đang bí
        bữa cài lại win mất hết rùi, nhưng mà làm thế này, chia ma trận n hàng thành ra n/số thread muốn dùng. Mỗi thread thực hiện nhân (n/số thread) hàng tương ứng với tất cả các cột ma trận bên kia, bạn ghép kết quả của các thread lại là ra ma trận kết quả ^^
        Á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


        • #19
          Originally posted by 09520535 View Post
          Hồ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 ^^
          link die rồi anh ơi... up lại được ko a

          Comment


          • #20
            lúc trước học HDH anh cũng làm đề tài này...dùng MultiThead nhân 2 ma trận cấp 4000x4000, 5000x5000 trong ~12s gì đó (test trên core i3 +core i5)...nói chung lên MSDN đọc là có hết à...tùy vào em có chịu khó tìm tòi hay không thôi

            Comment


            • #21
              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


              • #22
                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


                • #23
                  up up up up upppppppppppppp

                  Comment

                  LHQC

                  Collapse
                  Working...
                  X