Advertisement
Thiff

Threads_multidimension

Nov 13th, 2017
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. char pole[10][10];
  8. int const dlzka1 = 10;
  9. int const dlzka2 = 10000;
  10. char pole2[dlzka1][dlzka2];
  11.  
  12. void generuj (int d) {
  13.         for (int i =0 ; i<d ; i++) {
  14.                 for (int j = 0; j<d;j++) {
  15.                         pole[i][j]= rand() % 200 -100;
  16.                 }
  17.         }      
  18. }
  19. void generuj2 () {
  20.         for (int i =0 ; i<dlzka1 ; i++) {
  21.                 for (int j = 0; j<dlzka2;j++) {
  22.                         pole2[i][j]= rand() % 200 -100;
  23.                 }
  24.         }      
  25. }
  26. void sort2 (int d) {
  27.         for (int b =0 ; b<dlzka1 ; b++) {
  28.                 for (int i = 0; i < dlzka2-1; i++)
  29.                   {
  30.                         int min = i;
  31.                         for (int j = i + 1; j < dlzka2; j++)
  32.                                 if (pole2[b][j] < pole2[b][min])
  33.                                         min = j;
  34.  
  35.                         int swap = pole2[b][i];
  36.                         pole2[b][i] = pole2[b][min];
  37.                         pole2[b][min] = swap;
  38.                
  39.                 }
  40.         }
  41. }
  42. void sort3 (int d) {
  43.                 for (int i = 0; i < dlzka2-1; i++)
  44.                   {
  45.                         int min = i;
  46.                         for (int j = i + 1; j < dlzka2; j++)
  47.                                 if (pole2[d][j] < pole2[d][min])
  48.                                         min = j;
  49.  
  50.                         int swap = pole2[d][i];
  51.                         pole2[d][i] = pole2[d][min];
  52.                         pole2[d][min] = swap;
  53.                
  54.                 }
  55. }
  56.  
  57. void vypis (int d) {
  58.         cout << "------------------------------------" << endl;
  59.         for (int i = 0 ; i <d ; i++) {
  60.                 for (int j = 0; j<d;j++) {
  61.                         cout << (int)pole[i][j] << " ";
  62.                 }
  63.                 cout <<endl;
  64.         }
  65.         cout <<endl << "------------------------------------" << endl;
  66. }
  67. void sort ( int d) {
  68.         for (int b =0 ; b<d ; b++) {
  69.                 for (int i = 0; i < d-1; i++)
  70.                   {
  71.                         int min = i;
  72.                         for (int j = i + 1; j < d; j++)
  73.                                 if (pole[b][j] < pole[b][min])
  74.                                         min = j;
  75.  
  76.                         int swap = pole[b][i];
  77.                         pole[b][i] = pole[b][min];
  78.                         pole[b][min] = swap;
  79.                
  80.                 }
  81.         }
  82. }
  83. int kolik_ms( LPFILETIME pred, LPFILETIME po )
  84. {
  85.         hyper pred64b = pred->dwHighDateTime;
  86.         pred64b = ( pred64b << 32 ) | pred->dwLowDateTime;
  87.         hyper po64b = po->dwHighDateTime;
  88.         po64b = ( po64b << 32 ) | po->dwLowDateTime;
  89.         // konverze 100ns -> 1ms
  90.         return ( int ) ( ( po64b - pred64b ) / 10000 );
  91. }
  92. DWORD WINAPI vlakno( LPVOID r)
  93. {
  94.         int *r0 = (int *) r;
  95.     sort3(r0[0]);
  96.     return 0;
  97. }
  98.  
  99. int main ()
  100. {
  101.         srand((int)time(NULL));
  102.         int r0[10];
  103.         generuj(10);
  104.         vypis (10);
  105.         sort(10);
  106.         vypis(10);
  107.         //-----3----------//
  108.         FILETIME cas_pred, cas_po;
  109.     GetSystemTimeAsFileTime( &cas_pred );
  110.         generuj2();
  111.         cout<< " sortujem...." << endl;
  112.         sort2(10);
  113.         GetSystemTimeAsFileTime( &cas_po );
  114.         cout << "sortovanie trvalo:" << kolik_ms( &cas_pred, &cas_po ) <<"ms" <<endl;
  115.         //----------5----------//
  116.  
  117.         HANDLE p[10];
  118.  
  119.         GetSystemTimeAsFileTime( &cas_pred );
  120.         cout << "sortujem s 10 vlaknami...." << endl;
  121.         for (int i = 0;i<10;i++) {
  122.                 r0[i] = i;
  123.                 int r1[] = {r0[i],0};
  124.                 p[i] = CreateThread( 0, 0, vlakno, r1, 0, 0 );
  125.         }
  126.  
  127.         for (int i = 0;i<10;i++) {
  128.                 WaitForSingleObject (p[i],INFINITE);
  129.         }
  130.         GetSystemTimeAsFileTime( &cas_po );
  131.         cout << "sortovanie trvalo:" << kolik_ms( &cas_pred, &cas_po ) <<"ms" <<endl;
  132.         return 0;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement